nodejs服务器和nginx冲突

nodejs服务器和nginx冲突

我在 Digital Ocean Droplet 上运行一个 Node.js 应用程序,并尝试配置 Nginx,以便它代理我的应用程序正在运行的端口,

这是我在 sites-available 上的默认文件中的内容

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /prwrite;
    index index.html index.htm app.js;

    # Make site accessible from http://localhost/
    server_name http://www.xxx.xxxxx.com;

    location / {

           proxy_pass http://www.xxx.xxxx.com:3000/;
           proxy_redirect off;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
    #location /RequestDenied {
    #       proxy_pass http://127.0.0.1:8080;
    #}

    error_page 404 /404.html;

}

更改listen 80 default_server; 为 3000 后,我的节点应用程序根本无法启动

但使用给定的配置,如果我去http://XXX.XXXXXX.com:3000应用程序运行良好

和装载http://xxx.xxxxxxx.com

我的页面上出现大量 404 未找到错误

我怎样才能解决这个问题 ?

答案1

当 node.js 和 nginx 都被告知使用端口 3000 时,您的应用程序无法启动,因为只有一个应用程序可以绑定到该端口(考虑到它们都尝试绑定到 INADDR_ANY,即 0.0.0.0)。

您可以通过在 nginx 配置中添加代理位置来解决这种情况,例如location /socket.io/ {(或更适合您的设置的内容)指向在端口 3000 上运行的proxy_passnode.js。

相关内容