Testing your local websites on smartphones using a Squid proxy server.
This is a guide to install and configure your own Squid proxy server, for testing and debugging local websites, using your local hosts file to route the requests.
I have a local development environment configured with many VirtualHosts running on my local Apache webserver. I map local domain names to localhost (127.0.0.1) in my local hosts-file but that only makes these domains available on my local machine. Using the Squid proxy you can make local domains available for all your external devices.
This guide does not consider security whatsoever. Read the details
of squid.conf to setup your own security after you have installed Squid.
Mac OS
Installation
I'm going to use Macports to install Squid, a free proxy server. If
you do not have Macports installed, go check it out – this guide will not work without it.
In terminal, type:
sudo port install squid5
Add permissions to cache storage:
sudo chmod -R 777 /opt/local/var/squid
Update Squid configuration
Open the configuration file in your preferred editor:
/opt/local/etc/squid/squid.conf
In the configuration file, locate and uncomment this line – or add it to the bottom of the file if it does not already exist:
hosts_file /etc/hosts
Create swap folders
Simply run Squid the first time using the -z parameter to let Squid create the required swap folders. In Terminal run:
sudo /opt/local/sbin/squid -s -z --foreground
Run Squid
Start Squid in no daemon mode. This means it runs until you quit it by pressing ctrl-c.
squid -N
Start Squid, do your testing and quit the process when you are done. Thank me later :)
Yes, that's it.
Windows 10
Installation
Start with refreshing the software repositories to ensure you are working with the latest software version. Launch yo
Squid is available as a Windows .msi installer from squid-cache.org. Download the latest version and run the installer.
The installer will add a Squid Windows service to your computer and while this is convenient it is also a bit more than we need for just occasional testing. Consider to switch the service to manual, so it doesn't run in the background all the time.
Update Squid configuration
Open the configuration file in your preferred editor:
etc/squid/squid.conf
On Windows this file is located inside the etc folder in the Squid application folder. You can change the install location through the installer, so I don't know where it might be on your computer.
In the configuration file, locate and uncomment this line – or add it to the bottom of the file if it does not already exist:
hosts_file C:/Windows/System32/drivers/etc/hosts
If you can't find that line in the configuration file, then just add it to the end of the file.
Restart Squid
Go to Services and restart (or start) the Squid service.
Linux / Ubuntu
Installation
Start with refreshing the software repositories to ensure you are working with the latest software versions. Launch your terminal and enter the following command:
sudo apt-get update
Install squid package on Ubuntu with the following command:
sudo apt-get install squid
The system should prompt for confirmation - enter Y and allow the process to complete itself.
Update Squid configuration
The Squid configuration file is found at /etc/squid/squid.conf.
Open this file in a text editor called "nano" with the following command:
sudo nano /etc/squid/squid.conf
Press “Ctrl+w” to open the search option field. Then type in “http_port 3128” and then press “Enter”. It will take you to “http_port 3128” which is the default port. If the http_port is assigned with some other number, change it to 3128.
Following the same way search for “http_access deny all” and just comment it out by putting a “#” sign infront. Add a new line “http_access allow all”.
Search for “visible_hostname” the same way once again. Delete “#” sign at the beginning of the line. Give a name at the end of the line. i.e “visible_hostname razu_squid”.
search for “hosts_file /etc/hosts” and uncomment it by deleting the “#” sign – or add it to the bottom of the file if it does not already exist.
Exit nano now by pressing “Ctrl+X”. You will be prompt with a set of choices. Type in “Y” to save the changes. Then press “Enter”.
Restart the Squid service with the following command:
sudo systemctl restart squid
To verify that the installation was successful and Squid service is running, type the following command which will print the service status:
sudo systemctl status squid
A successful installation should output like:
Setting up local domains via your hosts file
To make your local domains available on your test devices update the entries in your local hosts-file pointing them to your own computers local network IP, like:
192.168.1.42 parentnode.proxy
Unfortunately you might need to update this whenever running the proxy server on a new network, or if your IP changes. I use a dual configuration, with one entry for testing on my local machine and another entry for proxy based testing. Thus every local domain entry in my hosts file looks like:
127.0.0.1 parentnode.local
fe80::1%lo0 parentnode.local
::1 parentnode.local
192.168.1.42 parentnode.proxy
Make sure your local Apache is ready to respond to your new proxy domain as well. In the Apache configuration for your project, you can add an Alias for the proxy domain:
ServerName parentnode.local
ServerAlias parentnode.proxy
Note: You cannot access .local domains on iOS devices
Configure proxy on smartphones
iPad/iPhone
Go to Settings on your iOS device. Choose WiFi, and click the i-icon on your network to edit network configuration. Choose Configure Proxy. Choose Manual. Assign the IP-address of your domain.proxy for server and 3128 for port. Follow the image below:
Remember to start Squid on your computer.
Android
Go to Settings on your Android device and choose Wifi. Touch and hold on the active network and choose Modify Network from the menu that shows up.
Choose Advanced options and then select Manual from the proxy options and enter the IP of your local computer and port number for Squid (3128).
Comments
No comments yet