首页 文章

Nginx配置流星

提问于
浏览
4

我的问题是如何让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 回答

  • 2

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

    更新:Nginx documentation有点困惑,但突出显示了带/不带URI的proxy_pass之间的区别:

    请求URI按如下方式传递给服务器:如果使用URI指定了proxy_pass指令,那么当请求传递给服务器时,与该位置匹配的规范化请求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;
    }
    

相关问题