nginx: нет обработчика для сервера - PullRequest
1 голос
/ 03 апреля 2020

Я пытаюсь настроить прокси nginx для службы tcp, http прокси работает как положено. Однако я продолжаю получать эту ошибку для сервера в контексте stream.

no handler for server in /etc/nginx/nginx.conf:6

Я не понимаю, как она отличается от серверов, определенных в контексте http .

events {

}

stream {
      server {
        listen 5601;
        deny   all;
    }
}

http {

    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_set_header   X-Forwarded-For $remote_addr;
            proxy_set_header   Host $http_host;
            return 301 https://$host$request_uri;
        }
        location /.well-known/acme-challenge/ {
            root /var/www/certbot;
        }
    }
    server {
        listen 443 ssl;
        server_name example.com;
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

        location / {
            proxy_pass http://example.com:5601;
        }
    }
}

Что означает эта ошибка и как ее исправить?

1 Ответ

1 голос
/ 15 апреля 2020

Проблема заключается в следующем:

listen 5601;
deny   all;

listen не понимают, что я буду делать для прослушивания здесь? Сразу же он обнаружил deny all;. что я буду делать с отрицанием? . Таким образом, вы должны сказать listen о том, что это означает. Например:

listen 853;
proxy_pass 127.0.0.1:53;

Здесь я приказал listen что-то сделать. Так что он знает, что делать, это значит. Он был там, чтобы прослушивать порт 853 и затем проксировать на localhost. Я думаю, что-то в этом роде. Не забудьте перезапустить

sudo systemctl restart nginx.services

Вы сказали:

Я не понимаю, чем он отличается от серверов, определенных в контексте http.

Конечно. Потому что server на http знают, что делать после прослушивания. :)

...