Reverse Proxy problems

redbaritone nginx-forum at forum.nginx.org
Fri Sep 29 19:17:45 UTC 2017


I am having some problems with my Nginx reverse proxy. I'm running a web
application on port 8010 that accepts and serves two different web sites
from that port. (As far as I know, there's no way to serve them on different
ports, with the server I'm using.) I have different host names for each
which are pointed to the same IP address. I'll call them
name1.domain.com:8010 and name2.domain.com:8010. Both of these successfully
resolve to the appropriate web root within my web application, and the
appropriate web site is rendered, IF I include the port number. I want to
use Nginx as a reverse proxy however, so that I'll have one place to
configure my SSL settings and redirect from old hostnames.

I set up my proxy in nginx two different ways, and neither of them
consistently resolve to the right website:

1: I setup one upstream server and accessed it through proxy_pass from both
server definitions:

upstream my_server{
    server 127.0.0.1:8010;
}

server {
    listen 80;
    server_name name1.domain.com;

    location / {
       root   /location_1
       proxy_pass http://my_server;
       ...
    }
}

server {
    listen 80;
    server_name name2.domain.com;

    location / {
       root /location_2
       proxy_pass http://my_server;
       ...
    }
}

Please note that I'm just trying to get the reverse proxy to work. Once I do
that, I'll add SSL requirements, and all the necessary rewrites to make sure
people are redirected to our secured interface.

The second way I tried this was to create a different upstream for each
website, using the full DNS names for each, and then calling the appropriate
upstream proxy from each server definition:

upstream name1_server{
    server name1.domain.com:8010;
}

upstream name2_server{
   server name2.domain.com:8010;
}

... (the same as above, except replacing my_server with name1/2_server at
proxy_pass)

Both ways gave the same results. After restarting my web application and
nginx (just to make sure I start from a clean slate), both
name1.domain.comand name2.domain.com resolve to the name1:domain.com:8010
website. However, if I go to name2.domain.com:8010, then both
name1.domain.com and name2.domain.com will resolve to that website. Going to
name1.domain.com:8010 then causes both portless addresses to resolve there,
until I visit name2.domain.com:8010 directly again.

Obviously, I don't understand the relationship between how nginx deals with
upstream declarations and how that passes along to my web application. Any
help would be appreciated.

Posted at Nginx Forum: https://forum.nginx.org/read.php?2,276620,276620#msg-276620



More information about the nginx mailing list