nginx ne sert pas les requêtes à une adresse IP externe


10

J'ai nginx fonctionnant sur le port 81. Je peux utiliser telnet telnet 127.0.0.1 81et tout va bien.

Mais quand j'essaye de telnet à ma machine de mon Mac (une adresse IP externe), je reçois juste cette erreur:

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

Voici mon fichier / etc / nginx / sites-available / default:

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

J'ai ouvert Ubuntu Firewall (ufw) pour autoriser le port 81.

Je suis totalement coincé maintenant.

Quelqu'un a des idées?

Réponses:


17

Vous avez le nom de serveur comme

server_name 109.123.x.x;

C'est faux !!!!!

Mettez n'importe quel nom et non un numéro comme

server_name mywebsite.home;

et mettez mywebsite.home comme IP du serveur nginx dans votre fichier hôte (/ etc / hosts) c'est à dire dans votre mac comme au format

109.123.X.X mywebsite.home

où XX est remplacé par des nombres

ou

Si vous voulez servir toute la demande, mettez simplement

server_name _;

Si cela ne résout pas les problèmes, vérifiez ci-dessous

C'est soit votre pare-feu, c'est-à-dire iptables, bloquant votre trafic, soit votre nginx écoute uniquement sur localhost, c'est-à-dire 127.0.0.1

Désactiver le pare-feu

sudo ufw disable

Vérifiez l'adresse d'écoute du port 81

sudo netstat -tulpn

Je suis passé au port 8080 et cela fonctionne maintenant. Cela pourrait être lié à un port privilégié ou peut-être que ma connexion 3G bloque le port 81. Quoi qu'il en soit, cela fonctionne maintenant. Merci beaucoup pour votre aide.
— Eamorr

S'il s'agit d'une instance dans le cloud comme rackspace ou AWS, vérifiez vos groupes de sécurité. Par défaut, les ports 22 et 80 sont les seuls généralement ouverts.
— radtek

ils l' sudo ufw disableont fait pour moi.
— GG_Python

Selon le doc nginx , l' utilisation de l'adresse IP avec nom_serveur n'est pas incorrecte . "Si quelqu'un fait une demande en utilisant une adresse IP au lieu d'un nom de serveur, le champ d'en-tête de demande" Hôte "contiendra l'adresse IP et la demande peut être traitée en utilisant l'adresse IP comme nom de serveur":
— Gabriel Glenn

1

J'ai le même problème il y a quelques mois lorsque j'essaie d'exécuter ngnix sur mon système Ubuntu et d'accéder aux services à partir d'un autre système Windows. mais je ne peux pas exécuter l'accès à n'importe quel service de port comme http://127.0.0.1/8000 après quelque temps j'ai surmonté cela en désactivant le pare-feu de mon système ubuntu.

commande pour désactiver le pare-feu:

    sudo ufw disable

vous pouvez également vérifier l'état de votre pare-feu en premier:

    sudo ufw status

0

Conseils qui m'ont aidé: A.) Port forward B.) Définissez l'adresse IP publique comme nom_serveur Ces étapes ont fonctionné pour moi, en particulier le conseil A.)


Le nom du serveur ne doit jamais vraiment être une adresse IP.
— Matt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.