如何使用proxy-pass将所有流量从nginx重定向到nodeJS

问题描述 投票:0回答:3

当我设置简单的 nginx 位置来捕获端口 3000 上的所有到 root 的流量并代理传递到 nodeJS 时,当我请求 http://example.com/something

当我输入 mydomain.net 时,我从 nodeJS 获得了结果,但是当我尝试 example.com/something 时,我得到 502 Bad Gateway。

server {
        listen xxx.xxx.xxx.xxx:80;
        server_name example.com  www.example.com;

        location / {
                proxy_pass http://xxx.xxx.xxx.xxx:3000/;
        }

}

我希望nodeJS能够处理url的其余部分(/之后),因为当nodeJS单独在端口80上时,这可以在没有nginx的情况下工作。

node.js nginx nginx-reverse-proxy
3个回答
0
投票

在文件中粘贴以下代码,并确保将 example.com 更改为您的域(或 IP),并将 1337 更改为您的 Node.js 应用程序端口:

server {
listen 80;
server_name example.com;

location / {
    proxy_set_header   X-Forwarded-For $remote_addr;
    proxy_set_header   Host $http_host;
    proxy_pass         "http://127.0.0.1:3000";
}
}

sudo nginx -t 
sudo service nginx restart

0
投票

我发现 nginx 代码没问题,我的 SSL 配置似乎在这里出现问题,在检查 nginx 的错误日志后,再次启动并成功将所有位置获取到 NodeJS。谢谢大家。


0
投票

这对我有用:

server {
  listen 80;
  listen [::]:80;

  server_name www.frostoven.com;
  root /var/www/frostoven.com;

  location / {
    proxy_pass            http://127.0.0.1:3000$request_uri;
    proxy_http_version    1.1;
    proxy_set_header      X-Forwarded-For $remote_addr;
    proxy_set_header      Upgrade $http_upgrade;
    proxy_set_header      Connection 'upgrade';
    proxy_set_header      Host $http_host;
    proxy_cache_bypass    $http_upgrade;
   }
}

对于 SSL,您可以在

listen 80
部分下面添加类似的内容:


  listen 443 ssl;
  listen [::]:443 ssl;
  include snippets/self-signed.conf;
  include snippets/ssl-params.conf;

以上内容不仅适用于 root,还适用于任何 URI,例如

example.com/whatever?test

© www.soinside.com 2019 - 2024. All rights reserved.