Nginx è in ascolto su una porta, risponde solo se impostato sulla porta 80


10

Sistema operativo: Funtoo. Ho associato NGINX alla porta 81 (voglio eseguirlo brevemente insieme al mio server Apache per facilitare la transizione), ed è in ascolto sulla porta (se indico un'altra porta, usando wget ottengo "Connessione rifiutata", ma usando la porta 81 ottengo "connesso") ma non serve mai una risposta HTML di alcun tipo!

Quando eseguo un wget sulla porta, dall'host locale, ottengo:

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

Su un altro 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...

Non succede mai niente dopo. I documenti esistono, è il normale nuntox.conf di Funtoo.

AGGIORNAMENTO: Posso farlo ascoltare sulla porta 80, ma mi fa ancora sentire che non riesco a farlo funzionare su nessuna porta ....

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

Modifica: file di configurazione:

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

Blocco server:

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

Hai un filtro pacchetti abilitato ( iptables)? In tal caso, ti sei ricordato di consentire la porta 81?
Andreas Wiese,

iptables non è abilitato.
Aviator45003,

2
Quindi parti pertinenti della tua configurazione sarebbero utili, immagino.
Andreas Wiese,

Risposte:


5

Prova il seguente blocco server:

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

Il carattere di sottolineatura _è un carattere jolly, inoltre il *:81probabile non fa quello che ti aspetti, basta usare il numero di porta.

Quindi prova le tue impostazioni con nginx -t:

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

Riavvia nginx:

service nginx restart

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

Aggiornare

Ho installato nginx su un sistema di test. Con il nginx.conffile stock e una modifica di 1 riga /etc/nginx/sites-enabled/default, sono stato in grado di recuperare i file dalla porta 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;
    }

}

Uscita Netstat:

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

Download file:

$ wget localhost:81

Contenuto del file:

$ 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

Porta di prova:

 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 Ancora nessun successo. Recv-Q 9 è un suggerimento di qualche tipo? Si alza ogni volta che provo un wget o qualcosa del genere. Il blocco server è esattamente come prescritto.
Aviator45003,

Non sono sicuro di cosa sia Recv-Q. Hai qualcosa in / etc / nginx / sites-available?
spuder,

1
@TC Vedi la mia risposta aggiornata.
spuder,

nessuna modifica al mio stato, anche seguendo il nuovo file di configurazione. È possibile che ci sia qualcosa che blocca le porte non la porta 80? C'è un modo per testarlo?
Aviator45003,

1
TC sì, usa nc, vedi update
spuder

4

Risulta il grosso problema? Nginx aveva impostato worker_processes su 0. Ho aggiunto una riga impostandola autonella parte superiore del mio nginx.conf, e tutto andava bene per il mondo!

Grazie a tutti per il tempo e la pazienza.


Mi hai appena salvato dal rinunciare dopo circa 1 ora di frustrazione - apparentemente una delle mie variabili automatiche utilizzate per il templating della configurazione di Nginx ha prodotto un 0for worker_processes, ed ero completamente sbalordito dopo aver quadruplicato il controllo di ogni altro file di configurazione, DNS, host, ecc.
geerlingguy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.