![](/img/trans.png)
[英]NGINX reverse proxy / port-forwarding rule to send http traffic to port 3000 for my Node Express application causes the application to be unusable
[英]can't serve port 80 express.js reverse proxy nginx
Ubuntu 14.04。 失去了尝试使用nodejs / expressjs在端口80上提供应用程序的想法。 起初,我收到一个“错误:监听EACCESS”错误(程序退出)。 通过在本地计算机上将节点运行为sudo可以解决此问题。
但是,在我的Linux主机上,即使sudo也不会占上风,并且我会“监听EADDRINUSE”(程序退出)。 在这里,expressjs被nginx反向代理。
编号较大的端口没有任何问题(例如默认值3000)
节点应用程序的简化版:
var express = require('express');
var app = express();
var myPort = 80;
app.listen(port, function() {
console.log("listening on " + parseInt(myPort) + "...");
});
NGINX配置
server {
listen 80;
listen [::]:80;
server_name devjustice.com www.devjustice.com;
location / {
proxy_pass http://127.0.0.1:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
try_files $uri $uri/ =404;
}
我一生都无法想到这个地址已经占用了什么? nginx正在提供其他配置文件,但没有任何东西(看起来好像?)触及回送地址或使用相同的域名。 谢谢你的帮助。 在其他SO帖子上也谈到了类似的问题,但我找不到解决方案。
您有两个进程试图在同一个端口上侦听,这将无法正常工作(至少不使用SO_REUSEPORT
,但这在这种情况下是没有意义的)。 只需为节点选择其他端口并相应地调整您的nginx配置即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.