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.