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?

Eamorr
la source

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
kaji
la source
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
Abhishek-Saini
la source
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.)

A09hopper
la source
Le nom du serveur ne doit jamais vraiment être une adresse IP.
Matt