2
votes

Comment supprimer le numéro de port 8080 de mon nom de domaine en utilisant Nginx v1.14.1?

J'utilise node et express , AWS Ec2 Linux et j'exécute deux applications Web dans le numéro de port 8080 et 8081 en utilisant pm2 .

a ajouté des sous-domaines à mon adresse IP Elastic admin.example.com et app.example.com.

Mes deux applications s'exécutant dans localhost: 8080 et 8081.

/etc/nginx/conf.d/virtual.conf // Après modification

const express = require('express');
const bodyParser = require('body-parser')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));

app.get('/login', function (req, res) {
    res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.get('/logout', function (req, res) {
    res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.listen('8080');
console.log('Server started at port 8080');

/etc/nginx/conf.d/virtual.conf // Avant modification

#
# A virtual host using mix of IP-, name-, and port-based configuration
#

#server {
#    listen   8000;
#    listen   somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

server.js

server {
    listen   admin.example.com:80;
    server_name  admin.example.com;
    location / {
        proxy_pass http://localhost:8080;
    }
}

nginx fonctionne correctement après le redémarrage mais n'a pas supprimé le numéro de port 8080 de mon domaine.

Que faire avec le port 80 code> ?, Je viens d'activer 80 à partir de ma règle entrante AWS Instance, Y a-t-il autre chose qui me manque?


9 commentaires

quelle est la sortie lorsque vous accédez à admin.example.com ?


@ThanhNguyenVan - Obtenir Ce site n'est pas accessible, admin.example.com a mis trop de temps à répondre.


admin.example.com doit être remplacé par votre domaine.


Yupp, nous l'avons fait!, Et le numéro de port est également 8080, obtenant la même erreur.


avez-vous changé la configuration comme je l'ai répondu ci-dessous?


Oui @ThanhNguyenVan


Et assurez-vous d'avoir créé un enregistrement DNS pour pointer vers votre adresse IP publique.


Le DNS est créé et fonctionne correctement avec 8080 comme admin.example.com:8080 @ThanhNguyenVan


Correction du bug, les règles entrantes ajoutées uniquement :: / 0 pour le port 80 , après suppression et ajout de HTTP , mis à jour comme 0.0. 0.0 / 0, :: / 0 maintenant tout fonctionne correctement. @ThanhNguyenVan


3 Réponses :


4
votes

Vous fournissez le domaine avec le port.

Essayez-le de cette façon:

server {
      server_name admin.example.com;
      listen 80;
      location / {
        proxy_pass http://127.0.0.1:8081;
      }
}


6 commentaires

Le port 80 n'a pas été ajouté aux règles d'entrée d'instance mais le sous-domaine pointe vers Elastic IP. Faut-il donner 80 pour écouter? actuellement, mon application s'exécute dans admin.example.com:8081 sans utiliser nginx


Nous écoutons sur les ports 80 (HTTP) et 443 (HTTPS) et transmettons la demande au port de notre machine (serveur) en fonction du nom du serveur. Votre projet est-il en cours d'exécution sur http://127.0.0.1:8081; ? Si oui, chaque fois qu'une demande est faite au domaine admin.example.com qui est mappé à 'l'IP de votre serveur', votre nginx configure où le transférer (dans votre cas, c'est 8081) .


D'accord, je suis d'accord, mais comment mon sous-domaine [ admin.example.com:8081 ] fonctionne sans activer HTTP (80) dans AWS?


mis à jour ma question - ajout du fichier virtual.conf avant la mise à jour


Activation du port 80 à partir des règles entrantes et mise à jour de virtual.conf comme vous l'avez dit, mais n'a rien affecté. redémarré nginx après mise à jour


Le problème des règles entrantes a ajouté ma réponse pour référence.



3
votes

remplacez virtual.conf par:

server {
    listen   80;
    server_name  admin.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

Et assurez-vous que vous avez bien créé un enregistrement DNS pour pointer vers votre adresse IP publique.


9 commentaires

Le DNS est créé et fonctionne correctement avec 8080 comme admin.example.com:8080


avez-vous changé la configuration comme ci-dessus et réessayez


Oui, je l'ai fait, mais aucun changement.


Je pense que nous pourrions manquer quelque chose des mises à jour du port 80 ?, nous venons d'activer les règles d'entrée 80 pour les instances.


le port ouvert 80 est suffisant pour l'accès http.


un journal sur nginx?


[émerg] 28069 # 0: la directive "nom_serveur" n'est pas terminée par ";" dans /etc/nginx/conf.d/virtual.conf:8


résolu avant seulement, ajouté ; à la fin de l'instruction server_name. maintenant il n'y a pas de bug. seule cette ligne existe dans ce fichier.


tout en redémarrant le nginx en ok



1
votes

Problèmes résolus:

Règles entrantes ajoutées uniquement :: / 0 dans la source pour le port 80 , après suppression et ajout de HTTP , source mise à jour comme 0.0.0.0/0, :: / 0 maintenant tout fonctionne correctement.


0 commentaires