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?
3 Réponses :
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; } }
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.
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.
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
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.
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 port80
, après suppression et ajout deHTTP
, mis à jour comme0.0. 0.0 / 0, :: / 0
maintenant tout fonctionne correctement. @ThanhNguyenVan