我在 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应用程序运行良好
我的页面上出现大量 404 未找到错误
我怎样才能解决这个问题 ?
答案1
当 node.js 和 nginx 都被告知使用端口 3000 时,您的应用程序无法启动,因为只有一个应用程序可以绑定到该端口(考虑到它们都尝试绑定到 INADDR_ANY,即 0.0.0.0)。
您可以通过在 nginx 配置中添加代理位置来解决这种情况,例如location /socket.io/ {
(或更适合您的设置的内容)指向在端口 3000 上运行的proxy_pass
node.js。