Nginx lauscht an einem Port und antwortet nur, wenn Port 80 eingestellt ist

10

OS: Funtoo. Ich habe NGINX an Port 81 gebunden (ich möchte es für einen kurzen Übergang neben meinem Apache-Server ausführen, um den Übergang zu vereinfachen) und es lauscht am Port (Wenn ich mit wget auf einen anderen Port zeige, wird "Verbindung abgelehnt" angezeigt). aber über Port 81 werde ich "verbunden"), aber es wird niemals eine HTML-Antwort jeglicher Art bereitgestellt!

Wenn ich ein wget auf dem Port vom localhost aus starte, bekomme ich:

# 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...

Auf einem anderen Computer ...

$ 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...

Danach passiert nie mehr etwas. Die Dokumente existieren, es ist die normale Funtoo nginx.conf.

UPDATE: Ich kann es dazu bringen, Port 80 abzuhören, aber es erschüttert mich immer noch, dass ich es an keinem Port zum Laufen bringen kann ...

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

Bearbeiten: Konfigurationsdateien:

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/*;
}

Serverblock:

server {
    listen  *:81;
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}
Aviator45003
quelle
Haben Sie einen Paketfilter aktiviert ( iptables)? Wenn ja, haben Sie daran gedacht, Port 81 zuzulassen?
Andreas Wiese
iptables ist nicht aktiviert.
Aviator45003
2
Dann wären relevante Teile Ihrer Konfiguration hilfreich, denke ich.
Andreas Wiese

Antworten:

5

Versuchen Sie den folgenden Serverblock:

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

Der Unterstrich _ist ein Platzhalter. Auch das, was *:81wahrscheinlich nicht das tut, was Sie erwarten, verwenden Sie einfach die Portnummer.

Dann testen Sie Ihre Einstellungen mit nginx -t:

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

Starten Sie nginx neu:

service nginx restart

Test mit 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.

Aktualisieren

Ich habe nginx auf einem Testsystem installiert. Mit der Bestandsdatei nginx.confund einer Änderung von 1 Zeile in /etc/nginx/sites-enabled/defaultkonnte ich Dateien von Port 81 abrufen

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;
    }

}

Netstat-Ausgabe:

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

Download-Datei:

$ wget localhost:81

Inhalt der Datei:

$ 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>

Update2

Testport:

 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
Spuder
quelle
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 Immer noch kein Erfolg. Ist Recv-Q 9 ein Hinweis? Es geht jedes Mal hoch, wenn ich ein Wget oder ähnliches versuche. Der Serverblock ist genau so, wie Sie es vorgeschrieben haben.
Aviator45003
Ich bin mir nicht sicher, was Recv-Q ist. Haben Sie etwas in / etc / nginx / sites-available?
Spuder
1
@TC Bitte sehen Sie meine aktualisierte Antwort.
Spuder
Keine Änderung meines Status, auch nach der neuen Konfigurationsdatei. Ist es möglich, dass etwas Ports blockiert, nicht Port 80? Gibt es eine Möglichkeit, dies zu testen?
Aviator45003
1
TC ja, benutze nc, siehe Update
Spuder
4

Stellt sich das große Problem heraus? Nginx hatte worker_processes auf 0 gesetzt. Ich habe autooben in meiner nginx.conf eine Zeile hinzugefügt, in der alles in Ordnung mit der Welt war!

Vielen Dank für Ihre Zeit und Geduld.

Aviator45003
quelle
Sie haben mich gerade davor bewahrt , nach etwa 1 Stunde Frustration aufzugeben - anscheinend eine meiner automatisierten Variablen, die für die Vorlage der Nginx-Konfigurationsausgabe a 0für verwendet wurden worker_processes, und ich war völlig verblüfft, nachdem ich alle anderen Konfigurationsdateien, DNS, Hosts usw. vierfach überprüft hatte.
Geerlingguy