Firstly, there’s no such thing as Virtual Host in nginx. , Virtual Host is an apache terminology.
Scenario:
- Domain mycooldomain1.com pointing to VPS server
- Nginx running on port 80
- Tomcat running on port 8080
- Only inbound TCP traffic to port 80 is allowed through firewall
In your nginx.conf (mine’s on /etc/nginx/nginx.conf), add following inside the http element:
http {
...
server {
server_name mycooldomain1.com;
access_log /var/log/nginx/mycooldomain1.com.access.log main;
error_log /var/log/nginx/mycooldomain1.com.error.log;
location / {
proxy_pass http://localhost:8080;
proxy_redirect default;
proxy_cookie_domain localhost mycooldomain1.com;
}
}
...
}
The server_name and location / expression matches request to http://mycooldomain.com while proxy_pass sets the backend where the response will be fetched from.
proxy_redirect ensures any 3xx redirects and Location: header on response is rewritten into mycooldomain1.com.
If your backend has different context root (eg: http://mycooldomain.com to http://localhost:8080/someapp) you will also need to adjust the cookie path
proxy_cookie_path /someapp/ /;