我的问题是如何让Nginx将域(www.example.com)转发到没有ssl的同一台服务器上的流星应用程序 .
这是详细信息:我正在尝试使用Nginx在我自己的服务器上托管由meteor制作的应用程序 . 我已经检查了大量我在网上找到的不同的配置文件(其中大部分已过时)但我似乎无法让Nginx将我的域名转发到端口3000,其中meteor可以接收它并处理网络页 .
Nginx代理端口的最新配置是:
upstream default {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://default/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
我稍微修改了一下我认为对我的设置是正确的 . 我正在使用Nginx中的默认配置文件,我使用“meteor create html”在/ usr / share / nginx / html中创建了一个流星应用程序 .
我知道使用默认设置是不好的习惯,但我只是试图让流星应用程序首先运行 .
我应该安装所有依赖项:meteor,nodejs,mongodb和nginx .
我发现很多最新的nginx配置都使用SSL,我不打算使用它 . 我不知道如何根据我的需要修改它们 .
有人可以解释为什么这个配置不起作用或我错过了让Nginx指向我的meteor应用程序www.example.com:3000?
提前致谢 .
附:
我已经能够使用VM完成相同的设置,使用完全相同的配置文件 . 我不知道我错过了哪一步 .
1 回答
问题是 proxy_pass 指令中的尾随反斜杠 . 应该是
proxy_pass http://default;
. 感谢anatoly指出了这一点 .更新:Nginx documentation有点困惑,但突出显示了带/不带URI的proxy_pass之间的区别: