无法提供端口80 express.js反向代理nginx

时间:2015-11-26 21:59:54

标签: linux node.js express nginx reverse-proxy

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帖子也触及了类似的问题,但我无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

您有两个进程尝试侦听同一个端口,这将无法工作(至少不使用SO_REUSEPORT,但在这种情况下没有意义)。只需为节点选择一个不同的端口,并相应地调整您的nginx配置。