nginx non serve richieste a indirizzo IP esterno


10

Ho nginx in esecuzione sulla porta 81. Posso usare Telnet telnet 127.0.0.1 81e tutto va bene.

Ma quando provo a telnet sul mio computer dal mio Mac (un indirizzo IP esterno), ottengo solo questo errore:

telnet: connect to address 109.123.x.x: Connection refused
telnet: Unable to connect to remote host

Ecco il mio / etc / nginx / siti-disponibili / file predefinito:

server {
        listen   81; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name 109.123.x.x;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
        }
        ...

Ho aperto Ubuntu Firewall (ufw) per consentire la porta 81.

Sono totalmente bloccato ora.

Qualcuno ha qualche idea?

Risposte:


17

Hai il nome del server come

server_name 109.123.x.x;

Questo è sbagliato !!!!!

Inserisci un nome diverso da un numero simile

server_name mywebsite.home;

e inserisci mywebsite.home come IP del server nginx nel tuo file host (/ etc / hosts) cioè nel tuo mac come in formato

109.123.X.X mywebsite.home

dove XX viene sostituito con i numeri

o

Se vuoi servire tutta la richiesta, semplicemente metti

server_name _;

Se ciò non risolve le cose, controlla di seguito

O è il tuo firewall, cioè iptables che blocca il tuo traffico o hai il tuo nginx in ascolto solo su localhost cioè 127.0.0.1

Disabilita il firewall

sudo ufw disable

Controllare l'indirizzo di ascolto per la porta 81

sudo netstat -tulpn

Sono passato alla porta 8080 e ora funziona. Potrebbe essere qualcosa a che fare con una porta priviligata o forse la mia connessione 3G blocca la porta 81. Comunque, ora funziona. Molte grazie per il vostro aiuto.
Eamorr,

Se è un'istanza nel cloud come rackspace o AWS, controlla i tuoi gruppi di sicurezza. Per impostazione predefinita, le porte 22 e 80 sono le uniche normalmente aperte.
Radtek,

lo ha sudo ufw disablefatto per me.
GG_Python

Secondo il documento nginx , l' utilizzo dell'indirizzo IP ha nome_server non è sbagliato . "Se qualcuno effettua una richiesta utilizzando un indirizzo IP anziché un nome di server, il campo di intestazione della richiesta" Host "conterrà l'indirizzo IP e la richiesta può essere gestita utilizzando l'indirizzo IP come nome del server":
Gabriel Glenn

1

Ho lo stesso problema qualche mese fa quando sto provando a eseguire ngnix sul mio sistema Ubuntu e ad accedere ai servizi da un altro sistema Windows. ma non riesco a eseguire l'accesso a nessun servizio di porta come http://127.0.0.1/8000 dopo qualche volta ho superato questo disattivando il firewall del mio sistema Ubuntu.

comando per disattivare il firewall:

    sudo ufw disable

puoi anche controllare prima lo stato del tuo firewall:

    sudo ufw status

0

Suggerimenti che mi hanno aiutato: A.) Port forward B.) Imposta l'IP pubblico come nome_server Questi passaggi hanno funzionato per me, in particolare il suggerimento A.)


Il nome del server non dovrebbe mai essere realmente un IP.
Matt,
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.