LINUX.ORG.RU
ФорумAdmin

Nginx не запускается. *:80 *:443 Address already in use!

 


0

1

Проблема:

При запуске nginx с конфигурациями выдаёт ошибки:

nginx[23283]: nginx: [emerg] bind() to 0.0.0.0:433 failed (98: Address already in use)
nginx[23283]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

Корень проблемы:

Прячу конфигурации, nginx взлетает.

Описание системы:

Стартует nginx с файла /etc/nginx/nginx.conf. Тот в свою очередь инклюдит файлы с /etc/nginx/conf.d/*.conf. Там сейчас лежат следующие конфиги:

test.conf:

server {
        server_name page.demo.lab;
        listen 80;

        return 301 https://$host$request_uri;
}

server {
        listen          433 ssl;
        server_name     page.demo.lab;

        # Logs
        access_log /var/log/nginx/page.demo.lab.log;
        error_log /var/log/nginx/page.demo.lab.log;

        # SSL
        ssl_certificate path/to/cert;
        ssl_certificate_key path/to/key;

        location / {
                proxy_pass http://webpage:8090/;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
        }
}

api-test.conf:

server {
        server_name api-page.demo.lab;
        listen 80;

        return 301 https://$host$request_uri;
}

server {
        server_name api-page.demo.lab;
        listen 443 ssl;

        # Logs
        access_log /var/log/nginx/api-page.demo.lab.log;
        error_log /var/log/nginx/api-page.demo.lab.log;

        # SSL
        ssl_certificate path/to/cert;
        ssl_certificate_key path/to/key;

        location / {
                proxy_pass http://webpage:8091/;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;

        }
}

Поиски пути решения:

Сделал netstat | grep http. Ничего (кроме того, что https использует контейнер, но там вообще с обратной стороны а контейнер на другом порту принимает. К делу думаю никак не относится).
Сделал telnet localhost 80; telnet localhost 443. Connection refused.
Сделал ps -eF | grep nginx. И вот тут удивился:

root     25597 25576  0  1500  2724   0 21:22 ?        00:00:00 nginx: master process nginx -g daemon off;
101      25640 25597  0  1614  1680   2 21:22 ?        00:00:00 nginx: worker process
101      25641 25597  0  1614  1448   2 21:22 ?        00:00:00 nginx: worker process
101      25642 25597  0  1614  1448   3 21:22 ?        00:00:00 nginx: worker process
101      25643 25597  0  1614  1448   1 21:22 ?        00:00:00 nginx: worker process

Закилял процессы, сделал снова, тот же вывод (но с другими PID). Перезапускаю nginx – получаю ту же ошибку

Но мне кажется я не в ту сторону копаю потому, что когда я убираю конфиги, всё отлично работает…

Прошу подскажите кто-нибудь, как решить проблему…

P.S Когда я убираю конфиги, делаю nginx start, ставлю конфиги обратно, делаю nginx -s reload и он прекрасно цепляет конфиги и работает…



Последнее исправление: ciipher3 (всего исправлений: 1)

Для того, чтобы редиректить на HTTPS достаточно одного сервера, который будет хендлить все имена как показано ниже.

server {
    listen 80 default_server;

    server_name _;

    return 301 https://$host$request_uri;
}

nginx -t на конфиги не ругается?

ComradeDOS
()
Последнее исправление: ComradeDOS (всего исправлений: 2)

netstat | grep http

netstat -npl | grep 80

скорее всего у тебя какой-нибудь контейнер порт занял

Закилял процессы, сделал снова, тот же вывод (но с другими PID)

Кхм. Ну да, контейнер перезапускается автоматом. Что-то не так?

router ★★★★★
()

Закилял процессы, сделал снова, тот же вывод (но с другими PID). Перезапускаю nginx – получаю ту же ошибку

А systemctl restart nginx религия не позволяет делать? Ты параллельно два nginx’а запускаешь же

adn ★★★★
()
Ответ на: комментарий от router

Было такое же предположение и вот что я получал. Однако видимо не совсем понимаю:

# docker ps
9b91198f9923   java-event-listener:1.0.3   "/bin/sh -c 'exec ja…"   18 hours ago   Up 18 hours   0.0.0.0:8282->8080/tcp                              container1
43ad9b6afffb   backend:stage               "docker-php-entrypoi…"   18 hours ago   Up 18 hours   0.0.0.0:8091->80/tcp                                container2
8bfb8a70b66a   backend:stage               "docker-php-entrypoi…"   12 days ago    Up 12 days    80/tcp                                              container3
2f787c51ab49   backend:stage               "docker-php-entrypoi…"   12 days ago    Up 12 days    80/tcp                                              container4
384a1acd6cd9   backend:stage               "docker-php-entrypoi…"   12 days ago    Up 12 days    80/tcp                                              container5
0509057178b3   backend:stage               "docker-php-entrypoi…"   12 days ago    Up 12 days    80/tcp                                              container6
2861d446d225   backend:stage               "docker-php-entrypoi…"   12 days ago    Up 12 days    80/tcp                                              container7
e50a38451d85   backend:stage               "docker-php-entrypoi…"   12 days ago    Up 12 days    80/tcp, 0.0.0.0:8082->8082/tcp, :::8082->8082/tcp   container8
a5a24d4adb3a   0927e99c937c                "/docker-entrypoint.…"   3 months ago   Up 16 hours   0.0.0.0:8090->80/tcp                                container9

Вот что даёт netstat:

# netstat -npl | grep 80
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      1969/docker-proxy
tcp        0      0 0.0.0.0:8082            0.0.0.0:*               LISTEN      31226/docker-proxy
tcp        0      0 0.0.0.0:8090            0.0.0.0:*               LISTEN      25561/docker-proxy
tcp        0      0 0.0.0.0:8091            0.0.0.0:*               LISTEN      29884/docker-proxy
tcp6       0      0 :::8080                 :::*                    LISTEN      1977/docker-proxy
tcp6       0      0 :::8082                 :::*                    LISTEN      31232/docker-proxy
udp6       0      0 fe80::300a:baff:feb:123 :::*                                775/ntpd
udp6       0      0 fe80::9c01:dbff:feb:123 :::*                                775/ntpd
udp6       0      0 fe80::74f2:86ff:fe0:123 :::*                                775/ntpd
udp6       0      0 fe80::6401:efff:fe2:123 :::*                                775/ntpd
udp6       0      0 fe80::478:28ff:fe4f:123 :::*                                775/ntpd
udp6       0      0 fe80::6c7c:8cff:fe4:123 :::*                                775/ntpd
udp6       0      0 fe80::c83a:8bff:fee:123 :::*                                775/ntpd
udp6       0      0 fe80::247f:e4ff:fe8:123 :::*                                775/ntpd
udp6       0      0 fe80::d4a5:17ff:fed:123 :::*                                775/ntpd
udp6       0      0 fe80::42:27ff:fe28::123 :::*                                775/ntpd
udp6       0      0 fe80::6cfc:52ff:fe5:123 :::*                                775/ntpd
udp6       0      0 fe80::42:c1ff:fe7c::123 :::*                                775/ntpd
udp6       0      0 fe80::250:56ff:feb0:123 :::*                                775/ntpd
unix  2      [ ACC ]     STREAM     LISTENING     8009     1/systemd            /run/systemd/private
unix  2      [ ACC ]     STREAM     LISTENING     33895    2153/containerd-shi  /run/containerd/s/5f54d4beb0684e49f7cf7756d318f88cdacb1bbd591f8c8058a204df7652f367
unix  2      [ ACC ]     STREAM     LISTENING     53268124 25576/containerd-sh  /run/containerd/s/7cbfc8048dfbd0db7f236fb5743d92e2150093ff8b4e352f16f0f5cbfb6610da
unix  2      [ ACC ]     STREAM     LISTENING     40988079 31254/containerd-sh  /run/containerd/s/892cdb3b6e1f77cb8e5687675caa874bedd95401feebd0ab2851a2479b1a84b8
unix  2      [ ACC ]     STREAM     LISTENING     40988090 31294/containerd-sh  /run/containerd/s/18085e4af5493234045d3b55e2a4687a462c336b315a4bf844333e2517a56280
ciipher3
() автор топика

Пришёл с утра, сделал nginx start с конфигами, всё заработало. Maaaagic…
Спасибо большое за ответы, я узнал что-то полезное для себя)
ComradeDOS, ты прав, можно действительно сделать один конфиг и весь http перенаправлять на https, благодарю
router, теперь знаю команду nginx -t, раньше не задавался вопросом, а можно ли как-то тестить конфигурации.
P.S. а как тут ссылаться на пользователей?

ciipher3
() автор топика