How to Run Your Own Proxy (Web only)

web-servers
To download these tutorials for OFFLINE viewing or for archive purposes please (Click here to download)
(Clicking the “.zip” will open the Archive, un-zip the .mht files then use one of the plugins below to view them)

You can open .mht WebArchive files directly inside FireFox Or Google Chrome by installing a plugin



This tutorial is for the person who needs to access restricted web sites from a location with a restricted internet connection
(e.g., work, school). If you need to use instant messenger, ftp, and other non-web (HTTP) protocols, Then your going
to need to setup a Proxy using SOCK5. You can find that guide on our website by clicking here.

Prerequisites

An unrestricted internet connection. Perhaps you have this at home (instead of school/work) or at a friend’s house.
A computer which you can leave turned on while you’re at school, work, or wherever the restricted internet connection is.

Let’s begin.

Downloading Apache

First things first, you need to download Apache. For the purposes of this text all references to and illustrations of Apache are of version 2.0.59. However, as long as you are working with 2.x all instructions herein should be accurate. To get Apache, point your Web browser to http://httpd.apache.org/download.cgi. This page offers 2.2.x as well as (at the time of this writing) 2.0.59. Since this text focuses on setting up a Windows server with Apache, you’ll want to download the Win32 Binary which should look something like: apache_2.0.59-win32-x86-no_ssl.msi.

Installing Apache

To begin installing Apache you’ll need to find and double-click the *.msi file you downloaded earlier. You might also want to think about where you are installing Apache. All the screen shots referenced in this section refer to a development server installation. This is the most common practice on small to large teams but if you’re an individual developer you may be installing everything on your personal machine. Either way, the process is the same; just be aware of the machine differences as you walk through the server installations (Apache, Subversion, and TortoiseSVN) and the client installations (TortoiseSVN and Subclipse).

Figure1_ApacheInstallScreen1

Figure2_ApacheInstallScreen2

In this screen you’ll configure some basic settings for your Apache server. If you are installing Apache on a development server you will likely use some sort of company or personal domain. If you are installing Apache on an individual development computer you will probably use 127.0.0.1 for both the Network Domain and the Server Name. Just remember what you put here, because all work from now on will use these initial settings.

If you follow my example to the strictest detail (as will the rest of this text) you will need to ensure the Network Domain you enter points to your development server. This is accomplished – most often – with DNS entries on your corporate network. If these entries are not in place you can edit your personal computer’s hosts file to point the yourcompany.com and/or svn.yourcompany.com domains to your development server. One last note, leave the radio button set to All Users, on Port 80 for now. I’ll demonstrate how to change this later in order to provide a very singularly-focused Apache/Subversion installation.

Figure3_ApacheInstallScreen-CustomInstall3
The Custom Setup screen is designed to show you specifics regarding what Apache will be installing and where.
All of the default installation settings are fine for the purposes of this text.

After you click next, The new web server will be installed onto the PC Once it’s finished installing
You need to do a little bit of manual configuring now, Don’t worry it’s very simple to do!

Open the file httpd.conf (“right click open with notepad”) This is the configuration file for the web server.
On Windows, the default location is c:Program FilesApache GroupApache2confhttpd.conf.

Figure7_ApacheConfDirectory

Comments in the file start with “#” (This means the server ignores every line of text starting with # (hash)

Around line 120, you’ll see Listen 8080 or Listen 80. Change this to the port on which you’d like to expose the proxy server. If this proxy server will be running on a residential cable/DSL connection, many ISPs prevent inbound connections on to residential connections on ports 80 and 25 as well as others.

Figure10_ApacheListenPort
To find out which inbound ports your ISP prevents connection to, find the FAQ for your ISP at dslreports.com. Additionally, if you will be connecting to this proxy server from a corporate environment, be aware that some corporate firewalls only permit outbound connections on a few ports to machines outside their firewall. Often outbound ports 21, 23, 80, and 443 are permitted because they are typically used for FTP, telnet, HTTP, and SSL, respectively.

Now remember the setup installer? You put in a domain name or an IP Address? Well this is also in the config file too
So double check now that it’s actually been entered correctly before starting the web server up! It should look similar to this diagram below.

Figure11_DoubleCheckingTheApacheServerName
If your IP address is in one of these ranges: UN-comment the following lines by removing the leading “#

10.0.0.0 – 10.255.255.255
172.16.0.0 – 172.31.255.255
192.168.0.0 – 192.168.255.255

you are most likely behind a router using NAT addressing. If so configure port forwarding on your router to forward the port you chose in the previous step to the NAT’d IP address of the PC which will be running the web apache httpd server (e.g., 198.168.x.x).

Now you need to set the web server up

The next STEP is very important! IF your config file doesn’t contain the following,
Just copy and paste it from the lines below into your config file and click save.

This is what turns your Web Server into a Proxy Web Server, So it’s VERY important!

———- Start Copy ————————————————-

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so


#Add the following bit to the end of the config file:

ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Deny from all
Allow from aaa.bbb.ccc.ddd
</Proxy>
#where aaa.bbb.ccc.ddd is the IP address of the remote machine which will connect to your PC.

#If you omit the green text, you will be running an open proxy. (This is a security Risk so be-careful)

———- END Copy ————————————————-

Save the file and start your apache Server. On Windows, this is done either from the Start Menu or from
the Service Control Panel
(if you installed apache httpd as a service which is recommended).

Caching (optional)

Apache can cache web server responses, such as commonly-used images, to speed things up.
HTTPS responses are not cached due to security restrictions.

To enable caching, add the following to the end of http.conf:

———- Start Copy ————————————————-

LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
# This sets up caching to disk.
# You can setup caching to memory if you prefer.
LoadModule disk_cache_module modules/mod_disk_cache.so
<IfModule mod_disk_cache.c>
CacheRoot c:/temp/cacheroot
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 4
# Read this for info about the above options
# Read this for info on cleaning the cache
</IfModule>
———- END Copy ————————————————-

Now making use of your new proxy server.

You can enter the Server IP / Domain name / port / into any Web Browsers Connection Settings.
But to make this a lot easier we’re going to be using a FREE Firefox Plugin called “FoxyProxy”
(This little plug-in for Firefox/Chrome  is used by millions of people world wide daily it’s very popular)

  1. Create a new proxy definition by clicking the “Add New Proxy” button on the FoxyProxy Options dialog
  2. foxyproxy
  3. Enter a name and optionally, notes, on the General tab For example, under name you might enter
    “Apache HTTPD” and under notes, “Web proxy running at home” or something similar
  4. On the Proxy Details tab select “Manual Proxy Configuration”. In the HTTP proxy field, enter the IP address of the machine on which you installed Apache httpd. If your ISP periodically changes your IP address (many cable/dsl ISPs do), get a free No-IP account. This services grant you a free domain name; for example, myproxy.bounceme.net. You run client software on your PC which “phones home” to No-IP every 30 minutes, informing them of your current IP address.
  5. In the port field, enter the port under which you configured Apache httpd to run.
    This is specified in the c:Program FilesApache GroupApache2confhttpd.conf file on the Listen xxxx line.
  6. Leave all other fields on the Proxy Details tab blank.
  7. On the Patterns tab enter patterns which match blocked URLs at your school/place-of-business.
  8. Start surfing the web like you was back in the year 1990!