Nginx nasłuchuje w porcie, odpowiada tylko, jeśli jest ustawiony na port 80


10

System operacyjny: Funtoo. Powiązałem NGINX z portem 81 (chcę uruchomić go razem z moim serwerem Apache na krótki czas, aby ułatwić przejście) i nasłuchuje na porcie (jeśli wskażę inny port, za pomocą wget otrzymam komunikat „Odmowa połączenia”, ale za pomocą portu 81 uzyskuję „połączenie”), ale nigdy nie obsługuje żadnej odpowiedzi HTML!

Kiedy uruchamiam wget na porcie, z localhost otrzymuję:

# wget localhost:81
-2014-04-16 23:56:45- http://localhost:81/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:81... connected.
HTTP request sent, awaiting response...

Na innym komputerze ...

$ wget 192.168.18.42:81
-2014-04-16 23:57:19- http://192.168.18.42:81/
Connecting to 192.168.18.42:81... connected.
HTTP request sent, awaiting response...

Po tym nic się nie dzieje. Dokumenty istnieją, to normalny Funtoo nginx.conf.

AKTUALIZACJA: Mogę sprawić, że nasłuchuje na porcie 80, ale wciąż mnie denerwuje, że nie mogę go uruchomić na żadnym porcie ...

netstat -aWn | grep 81 | grep LISTEN
tcp 60 0 0.0.0.0:81 0.0.0.0:* LISTEN

Edycja: Pliki konfiguracyjne:

user nginx nginx;
worker_rlimit_nofile 6400;

error_log /var/log/nginx/error_log info;

events {
    worker_connections 1024;
    use epoll;
}

http {
    include /etc/nginx/mime.types;

    # This causes files with an unknown MIME type to trigger a download action in the browser:
    default_type application/octet-stream;

    log_format main
        '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '"$gzip_ratio"';

    client_max_body_size 64m;

    # Don't follow symlink if the symlink's owner is not the target owner.

    disable_symlinks if_not_owner;
    server_tokens off;
    ignore_invalid_headers on;

    gzip off;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/x-icon image/bmp;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    index index.html;
    include /etc/nginx/sites-enabled/*;
}

Blok serwera:

server {
    listen  *:81;
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

Czy masz włączony filtr pakietów ( iptables)? Jeśli tak, to czy pamiętasz, aby zezwolić na port 81?
Andreas Wiese

iptables nie jest włączony.
Aviator45003

2
W takim razie przydatne byłyby odpowiednie części twojej konfiguracji.
Andreas Wiese

Odpowiedzi:


5

Wypróbuj następujący blok serwera:

server {
   listen       81 default_server;
    server_name _;    
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

Podkreślenie _jest symbolem wieloznacznym. *:81Prawdopodobnie nie robi to, czego oczekujesz, po prostu użyj numeru portu.

Następnie przetestuj ustawienia za pomocą nginx -t:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Uruchom ponownie nginx:

service nginx restart

Test z netstat:

root@gitlab:~# netstat -napl | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7903/nginx      
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      2662/unicorn.

Aktualizacja

Zainstalowałem nginx w systemie testowym. Dzięki nginx.confplikowi zapasowemu i zmianie 1 linii na /etc/nginx/sites-enabled/default, mogłem odzyskać pliki z portu 81

cat /etc/nginx/sites-enabled/default
server {

    listen   81;
    server_name localhost;
    root /usr/share/nginx/www;
    index index.html index.htm;


    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

}

Wyjście Netstat:

netstat -napl | grep 81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      3432/nginx

Pobieranie pliku:

$ wget localhost:81

Zawartość pliku:

$ cat index.html
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>

Aktualizacja 2

Port testowy:

 root@gitlab:# nc -vz localhost 81
 Connection to localhost 81 port [tcp/*] succeeded!
 root@gitlab:# nc -vz localhost 443
 nc: connect to localhost port 443 (tcp) failed: Connection refused

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 9 0 0.0.0.0:81 0.0.0.0:* LISTEN 1026/nginx: master Nadal nie ma sukcesu. Czy Recv-Q jest 9, to jakaś wskazówka? To idzie w górę za każdym razem, gdy próbuję wget lub coś takiego. Blok serwera jest dokładnie taki, jak zaleciłeś.
Aviator45003

Nie jestem pewien, co to jest Recv-Q. Czy masz coś w / etc / nginx / sites-available?
spuder

1
@TC Proszę zobaczyć moją zaktualizowaną odpowiedź.
spuder

bez zmiany mojego statusu, nawet po nowym pliku konfiguracyjnym. Czy to możliwe, że coś blokuje porty inne niż port 80? Czy mogę to przetestować?
Aviator45003

1
TC tak, użyj nc, patrz aktualizacja
spuder

4

Okazuje się duży problem? Nginx ustawił wartość worker_processes na 0. Dodałem wiersz ustawiający go autow górnej części mojego pliku nginx.conf i wszystko było dobrze ze światem!

Dziękujemy wszystkim za poświęcony czas i cierpliwość.


Po prostu uratował mnie od rezygnacji po około 1 godzinie frustracji-widocznie jeden z moich automatycznych zmiennych wykorzystywanych do templating wyjściowy konfiguracji Nginx A 0dla worker_processesi byłem całkowicie zaskoczony po poczwórną sprawdzając każdy inny plik konfiguracyjny, DNS, gospodarze, itd.
geerlingguy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.