Node.js 使用SSL的nodejs应用程序的Nginx配置
我有一个节点应用程序正在运行 localhost:8008/serviceName 此应用程序位于Node.js 使用SSL的nodejs应用程序的Nginx配置,node.js,ssl,nginx,Node.js,Ssl,Nginx,我有一个节点应用程序正在运行 localhost:8008/serviceName 此应用程序位于/opt/myfolder/test/中,我还在其中的certs文件夹中生成了一个.pem文件和一个由CA签名的.cer文件。 我还安装了pm2,以帮助我从https端点运行此服务器 我创建了一个名为service.conf的文件,并将其符号链接到/etc/nginx/sites enabled 这就是.conf文件的外观 server { listen 443;
/opt/myfolder/test/
中,我还在其中的certs文件夹中生成了一个.pem
文件和一个由CA签名的.cer
文件。
我还安装了pm2,以帮助我从https端点运行此服务器
我创建了一个名为service.conf
的文件,并将其符号链接到/etc/nginx/sites enabled
这就是.conf
文件的外观
server {
listen 443;
server_name localhost
root /opt/myfolder/test/public;
index index.html index.htm;
ssl on;
ssl_certificate /opt/myfolder/test/certs/server.cer
ssl_certificate_key /opt/myfolder/test/certs/server.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_session_cache shared:SSL:1m;
location @app {
log_not_found off;
access_log off;
proxy_pass https://127.0.0.1:8008;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
location / {
try_files $uri $uri/ @app;
}
}
在我的Node.js应用程序中,我添加了以下内容:
var server = https.createServer({
key: fs.readFileSync(path.join(__dirname, 'certs', 'server.pem')),
cert: fs.readFileSync(path.join(__dirname, 'certs', 'server.cer'))
}, app);
server = app.listen(8008,'localhost', function() {
console.log('Express server listening on port ' + server.address().port);
});
通过以下方式重新启动nginx:sudo服务nginx restart
并使用pm2启动应用程序:pm2 start app.js
我现在可以访问
localhost:8008/serviceName
但我无法访问
我想知道我的配置是否有问题,或者应用程序是否通过nginx路由。
我缺少什么?替换:
server = app.listen(8008,'localhost', function() {
console.log('Express server listening on port ' + server.address().port);
});
与:
解决了这个问题。您已经创建了https服务器,在下一行中,您将其扔掉,并创建默认http服务器(
app.listen(…);
),当您转到localhost:8008
时,您将完全绕过nginx。如果你想使用nginx,你不需要你的应用程序使用HTTPS
server = app.listen(8008,'localhost', function() {
console.log('Express server listening on port ' + server.address().port);
});
server.listen(8008,'localhost', function() {
console.log('Express server listening on port ' + server.address().port);
});