Nginx配置流星

时间:2015-10-21 09:26:02

标签: meteor nginx

我的问题是如何让Nginx将域名(www.example.com)转发到没有ssl的同一台服务器上的流星应用程序。

以下是详细信息: 我试图使用Nginx在我自己的服务器上托管由meteor制作的应用程序。我检查了大量我在网上发现的不同配置文件(其中大部分都已过时)但我似乎无法让Nginx将我的域名转发到流量可以选择的端口3000它并处理网页。

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?

提前致谢。

P.S。

我已经能够使用完全相同的配置文件使用VM进行相同的设置。我不知道我错过了哪一步。

1 个答案:

答案 0 :(得分:2)

问题是 proxy_pass 指令中的尾随反斜杠。它应该是proxy_pass http://default;。感谢anatoly指出了这一点。

更新: Nginx documentation有点困惑,但强调了使用/不使用URI的proxy_pass之间的区别:

  

请求URI按如下方式传递给服务器:

     

如果使用URI指定了proxy_pass指令,那么当a。时   请求被传递给服务器,这是规范化请求URI的一部分   匹配该位置将替换为指令中指定的URI:

location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}
  

如果指定了proxy_pass而没有URI,则传递请求URI   服务器的格式与客户端在原始时发送的格式相同   处理请求,或传递完整的规范化请求URI   处理更改的URI时:

location /some/path/ {
    proxy_pass http://127.0.0.1;
}