I've implemented this by using the reverse proxy feature with virtual hosts in the Apache HTTP web server.
The result this exercise is trying to achieve is that external traffic from internet requesting pages from the site www.all-about-units.com which is DNS mapped to my public ip address will be routed to the Apache web server on the local network via a port forwarding rule in the router on the local network. The Apache web server will look into its rules for virtual hosts and see that the user requested the domain www.all-about-units.com and therefore delegate the traffic to a separate Apache Tomcat 7 servlet container running on the local network to serve the request. The traffic is then forwarded back through the web server to the end user.
Setup Apache HTTP server as reverse proxy
First of all the Apache HTTP web server must be installed. I had mine installed since long ago but if I remember correctly there's not much than doing this is you have a Debian/Ubuntu/Mint like Linux serversudo apt-get install apache2
Now, to enable the reverse proxy feature of the Apache server
/ $ sudo a2enmod proxy_http
Next, we must create a configuration for our new site as a virtual host. Go to the directory of available sites
/etc/apache2/conf.d $ cd /etc/apache2/sites-available/
Copy the default configuration to a setup for your site
/etc/apache2/sites-available $ sudo cp default all-about-units
Lets edit the configuration file. The first line tells the Apache server to listen on port 80, the standard HTTP port. Next the names of the virtual host are given. So traffic requesting another domain name or the ip address directly will not be handled by this virtual host configuration.
Next look att the ProxyPass and ProxyPassReverse, these tell Apache where to forward the request that has matched this virtual host rule. In this case to the Tomcat server on the same machine (127.0.0.1 is the loopback address of localhost) but on port 8080. The slash before the address means that all requests should be forwarded to the Tomcat server. If for example you had ProxyPass /foo/bar/ http://127.0.0.1:8080/ then the request www.all-about-units.com/foo/bar/page.html would be redirected to 127.0.0.1:8080/page.html
/etc/apache2/sites-available $ sudo vim all-about-units
<VirtualHost *:80>ServerName all-about-units.comServerAlias www.all-about-units.comProxyRequests OffProxyPreserveHost On<Proxy *>Order deny,allowAllow from all</Proxy>ProxyPass / http://127.0.0.1:8080/ProxyPassReverse / http://127.0.0.1:8080/</VirtualHost>
Enable and disable the site
To tell the Apache HTTP web server to enable this configuration, run the a2ensite command on the name of the new configuration/etc/apache2/sites-available $ sudo a2ensite all-about-units
Enabling site all-about-units.To activate the new configuration, you need to run:service apache2 reload
Reload Apache
/etc/apache2/sites-available $ sudo service apache2 reload* Reloading web server config
I had some issues so I restarted Apache the hard way also and then it works.
/etc/apache2/sites-available $ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
That's it!
Verify in the logs of the application server that the request are directed correct and your home.
Next step might be to enable the mod cache feature of Apache to let the web server handle caching of all static material served by the application server like css, images and javascript. More on that in another post.
If you for some reason want to take the site of the web for some time you can instead of stopping the application server disable the site in the web server virtual host forwarding by using the command
Verify in the logs of the application server that the request are directed correct and your home.
Next step might be to enable the mod cache feature of Apache to let the web server handle caching of all static material served by the application server like css, images and javascript. More on that in another post.
If you for some reason want to take the site of the web for some time you can instead of stopping the application server disable the site in the web server virtual host forwarding by using the command
sudo a2dissite all-about-units
Whenever I need some problem relating this issue I come to your site and get very informative stuff thanks a lot for your article . Keep it up.access Mp3Raid in UK
ReplyDeleteI am hoping the same best work from you in the future as well. In fact your creative writing abilities may inspired others.
ReplyDeleteaccess Rapid Library in UK
Your blog give many information thanks for share this informative article.
ReplyDeleteRapid Library UK proxy