Nous utilisons une combinaison de Apache Server et NodeJs (Express) pour un site Web. Sans SSL, l'Apache écoutait le port 80 et les Nodejs le port 8080.NodeJs Express: Listeining à partir de HTTPS dans Amazon EC2 Ubuntu
Maintenant, j'installe SSL sur le site Web. L'Apache est configuré pour écouter le port 443. J'ai essayé de faire en sorte que les Nodej écoutent le port 8443, 3333, etc. - en définissant le groupe de sécurité AWS comme "TCP personnalisé" pour le port. Le problème est que je ne reçois aucune réponse du serveur de Nodejs. Mon impression est que le problème est avec le paramètre de groupe de sécurité EC2 mais ne peut pas vraiment mettre le doigt sur le problème exact.
Le serveur est créé pour NodeJS comme suit:
var https = require('https');
var fs = require('fs');
...
...
var https_options = {
ca: fs.readFileSync ("/path/to/cabundle.ca-bundle", "utf8"),
key: fs.readFileSync("/path/to/sslkey.key", "utf8"),
cert: fs.readFileSync("/path/to/certificate.crt", "utf8")
};
var app = express();
var server = https.createServer(https_options, app);
....
....
server.listen(8443 or 3333);
Démarrage du serveur ne provoque aucune erreur. Navigateur, d'où j'appelle le serveur Nodejs, ne montre aucune erreur.
Toute idée est appréciée.
Après Arif a souligné que cela peut être résolu par les paramètres Apache, j'ajoute les seetings Virtualhost à
/etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.example.com
Redirect permanent/https://www.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /var/www/html/mysite
Servername www.example.com
SSLEngine on
SSLCertificateKeyFile /path/to/sslkey.key
SSLCertificateFile /path/to/certificate.crt
SSLCertificateChainFile /path/to/cabundle.ca-bundle
<Directory /var/www/html/mysite>
AllowOverride All
Options FollowSymlinks
</Directory>
</Virtualhost>
Les demandes côté client sont envoyés à https://www.example.com:8443
Vous devez utiliser 'https' pour faire une requête' https: //www.example.com: 8443'. Si vous demandez 'https: //www.example.com: 8443' alors il n'y a pas de rôle d'apache. –
Pouvez-vous faire une requête au serveur nodejs dans EC2 ('curl -Ik https: //127.0.0.1: 8443')? Avez-vous ajouté des règles dans 'iptables' avant? – ronald8192
@ArifKhan Désolé, mon mauvais. C'est https: // ... – Sam11