This tutorial shows you how to configure Nginx as a reverse proxy to redirect the traffics from port 80 to Apache Tomcat on port 8080.

Here is the environment in my Linode server :

  1. Debian 7.5
  2. Nginx 1.2.1
  3. Tomcat 7.0.28

P.S Both Nginx and Tomcat are installed via apt-get install.

1. Tomcat Configuration

Edit server.xml, check the Tomcat listening port, and configure the default path to /apple

/etc/tomcat7/server.xml
<!-- Tomcat listen on 8080 -->
<Connector port="8080" protocol="HTTP/1.1"
     connectionTimeout="20000"
     URIEncoding="UTF-8"
     redirectPort="8443" />


  <!-- Set /apple as default path -->
  <Host name="localhost"  appBase="webapps"
       unpackWARs="true" autoDeploy="true">

	 <Context path="" docBase="apple">
	     <!-- Default set of monitored resources -->
	     <WatchedResource>WEB-INF/web.xml</WatchedResource>
	 </Context>

  </Host>

Restart Tomcat, make sure when you access 127.0.0.1:8080, it will display the content in 127.0.0.1:8080/apple

 

2. Nginx Configuration

In Nginx, edit /etc/nginx/sites-enabled/default, put following content :

/etc/nginx/sites-enabled/default
server {
  listen          80;
  server_name     yourdomain.com;
  root            /etc/tomcat7/webapps/apple;

  proxy_cache one;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/;
  }
}

It tells Nginx to redirect the traffics from port 80 to Apache Tomcat on port 8080. Done, restart Nginx.

 

References

  1. NGINX Reverse Proxy