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 config
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帖子也触及了类似的问题,但我无法找到解决方案。
答案 0 :(得分:1)
您有两个进程尝试侦听同一个端口,这将无法工作(至少不使用SO_REUSEPORT
,但在这种情况下没有意义)。只需为节点选择一个不同的端口,并相应地调整您的nginx配置。