Harsh J

Memoirs of a QWERTY Keyboard

Running a local CGIProxy web proxy server on OSX

3 comments

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

Written by Harsh

October 1st, 2011 at 11:49 am

Posted in Personal