не может обслуживать порт 80 express.js обратного прокси-сервера nginx

Убунту 14.04. Схожу с ума, пытаясь обслуживать приложение на порту 80, используя nodejs/expressjs. Сначала я получил ошибку «Ошибка: прослушать EACCESS» (выход программы). Это было решено на моей локальной машине, запустив node как 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, но я не смог найти решение.


person StayCool    schedule 26.11.2015    source источник
comment
nginx и экспресс явно используют порт 80.....   -  person j_mcnally    schedule 27.11.2015


Ответы (1)


У вас есть два процесса, пытающихся прослушивать один и тот же порт, который не будет работать (по крайней мере, без использования SO_REUSEPORT, но в этом сценарии это не имеет смысла). Просто выберите другой порт для узла и соответствующим образом настройте конфигурацию nginx.

person mscdex    schedule 26.11.2015