Running a local CGIProxy web proxy server on OSX

What is CGIProxy?

It is slightly ancient today, but CGIProxy still appears to be one of the good web proxies (non-transparent, CGI-based proxy script) out there.

Also, being essentially a PERL script, its easy to set it up with an existing Apache2 install. Thankfully enough, Mac comes with its own Apache2 server well integrated and the work required to edit and configure it to run PERL scripts is trivial.

Some reasons why you might want to run CGIProxy locally would be to test a local website for how it handles session data, or to even use it generally to filter content over your network, etc.. I had the former need while working with Hadoop‘s web applications as part of what I do on a daily basis at Cloudera.

 

Here’s how to setup CGIProxy locally on your Mac OSX (or earlier/later):

Setup Apache2 to allow Perl and CGI execution

Over Applications – System Preferences – Sharing, disable ‘Web Sharing’ if it is running. This stops the Apache2 web server that may already be running.

System Preferences - Sharing
System Preferences - Sharing
Sharing - Disable Web Sharing before we configure Apache2
Sharing - Disable Web Sharing before we configure Apache2

With that out of the door, we should be able to edit out our Apache2 configs without any issue. With your favorite text editor, I use vim below, edit the file /etc/apache2/httpd.conf and append the following lines to it somewhere along the end:


AddHandler cgi-script .cgi

This would let Apache be able to interpret files ending with .pl as CGI-scripts.

Configure /etc/apache2/httpd.conf with Vim
Configure /etc/apache2/httpd.conf with Vim

The next steps is to configure and allow execution of such files via your user account, which we can do by editing yet another file named /etc/apache2/users/<Your username>.conf. For instance, on my setup, the file is called /etc/apache2/users/harsh.conf. Modify the ‘Options’ configuration to allow CGI Execution:


Options Indexes MultiViews ExecCGI

Configure /etc/apache2/users/"Username".conf with Vim
Configure /etc/apache2/users/"Username".conf with Vim

With that done as well, we’re now ready to setup CGIProxy.

Setting up CGIProxy

Fetch the CGIProxy tarball, which is about 170 KB strong. Extracting this would provide you a script called nph-proxy.cgi. Place it in the ~/Sites directory of your Home.

Place the CGIProxy script into the ~/Sites directory
Place the CGIProxy script into the ~/Sites directory

We’re done with installing CGIProxy.

Running CGIProxy

Now that we’re all set, we’ll just launch the Apache2 web server again and get to using the CGIProxy.

Head back to Applications – System Preferences – Sharing and enable ‘Web Sharing’ to run the server. Once up, you’ll get the public links to your homepage.

Enable Web Sharing under System Preferences - Sharing
Enable Web Sharing under System Preferences - Sharing

Head to <Your URL>/nph-proxy.cgi (For example, http://localhost/~harsh/nph-proxy.cgi) and you should see a properly functional, local CGIProxy ready for consumption. Hit it with a URL of choice and set some options you want it to use, and you’re off. Also look into the script with a text editor to see further configuration options.

CGIProxy in Chrome
CGIProxy in Chrome

Published by

Harsh

Harsh, also known to some as 'Qwerty' or 'QwertyManiac' online, is a Customer Operations Engineer at Cloudera, Inc.. Harsh is a fan of trance and electronic music, distributed systems and GUI programming, and loves to troubleshoot and hack on code in his free time. Formerly a KDE committer, he now is a committer on the Apache Hadoop and Apache Oozie projects and is a great fan of all Open Source Software.

3 thoughts on “Running a local CGIProxy web proxy server on OSX”

  1. Been reading your blog since you installed “Listen” on your computer.
    Good to see OSX on your blog and hence the question did u get a mac?

Comments are closed.