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

ep6jt1vc  于 2023-10-17  发布在  Nginx
关注(0)|答案(3)|浏览(90)

当我设置简单的nginx位置来捕获所有到root的流量并在端口3000上代理传递到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(在/之后),因为这在没有nginx的情况下工作,当nodeJS单独在端口80上时。

a8jjtwal

a8jjtwal1#

在文件中保存以下代码,并确保将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
jm2pwxwz

jm2pwxwz2#

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

23c0lvtd

23c0lvtd3#

这对我很有效:

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/your-cert-info.conf;
  include snippets/ssl-params.conf;

以上方法不仅适用于root,还适用于任何URI,如example.com/whatever?test

相关问题