使用nginx从独特的IP中提供多个应用程序

时间:2013-06-28 13:28:08

标签: node.js nginx vps

我有两个与我的VPS相关的IP,我正在尝试将其设置为两个节点应用程序。这是我的配置:

在/ etc / nginx / sites-enabled / domain1:

upstream app_domain1 {
        server 127.0.0.1:4000;
}

server {
        listen 0.0.0.0:80;
        server_name IP1.xxx.xxx.xxx;
        access_log /var/log/nginx/domain1.log;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nninx-Proxy true;

                proxy_pass http://app_domain1/;
                proxy_redirect off;
        }
}

在/ etc / nginx / sites-enabled / domain2

upstream app_domain2 {
        server 127.0.0.1:3000;
}

server {
        listen 0.0.0.0:80;
        server_name IP2.xxx.xxx.xxx;
        access_log /var/log/nginx/domain2.log;

        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nninx-Proxy true;

                proxy_pass http://app_domain2/;
                proxy_redirect off;
        }
}

在/ etc / nginx / sites-enabled中,我跑了:

ln -s /etc/nginx/sites-available/domain1 domain1
ln -s /etc/nginx/sites-available/domain2 domain2

现在,当我转到/ var / www / domain1并在正确的端口上运行“node app.js”时,我可以访问相关的IP地址并看到应用程序在运行,但对于domain2也是如此(我检查它是否在这个配置的正确端口上运行。请求只是超时 - 根本没有响应。

那我怎么解决这个问题呢?

更新

如果我直接进入端口,我会在两个IP上看到这两个应用程序,所以:

IP1.xxx.xxx.xxx:4000为我提供了domain1的应用

IP1.xxx.xxx.xxx:3000为我提供了domain2的应用

IP2.xxx.xxx.xxx:4000为我提供了domain1的应用

IP2.xxx.xxx.xxx:3000为我提供了domain2的应用

所以它将每个IP地址视为相同。

1 个答案:

答案 0 :(得分:0)

server_name只接受域而不接受IP地址。

您在代理标头中出现拼写错误,请更改:

proxy_set_header X-Nninx-Proxy true;

用这个:

proxy_set_header X-NginX-Proxy true;