[英]setup nginx ssl nodejs+express socket.io angularjs
我在后端构建了nodejs + express,在前端构建了angularjs,并在nginx下运行。 这是我的nginx设置
server {
listen 82;
server_name example.com www.example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
这条路线443用于ssl
server {
listen 443;
ssl on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
ssl_certificate /home/ubuntu/config.com.ssl/ssl.crt;
ssl_certificate_key /home/ubuntu/config.com.ssl/ssl.key;
server_name example.com www.example.com;
location / {
proxy_pass https://someIP:8085;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location ~ ^/(scripts.*js|styles|images) {
gzip_static on;
expires 1y;
add_header Cache-Control public;
add_header ETag "";
break;
}
location /socket.io {
proxy_pass https://someIP:3001;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection 'upgrade';
#proxy_set_header Host $host;
#proxy_cache_bypass $http_upgrade;
}
location /api {
proxy_pass https://someIP:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /public {
proxy_pass https://someIP:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
在后端,我像这样设置服务器
var app = require('../app');
var debug = require('debug')('tlevi:server');
var fs = require('fs');
var http = require('http');
var https = require('https')
var options = {
key: fs.readFileSync('./configssl/ssl.key'),
cert: fs.readFileSync('./configssl/ssl.crt')
}
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3001');
app.set('port', port);
/**
* Create HTTP server.
*/
//var server = http.createServer(app);
var server = https.createServer(options, app);
/**var server = https.createServer(app, options, (req, res) => {
res.writeHead(200);
res.end('hello world\n ssl');
}).listen(3000);
*/
var io = app.io;
io.attach(server);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
服务器像魅力一样流畅运行,但是在客户端却出现了502个错误的网关(但ssl运行良好)。 somethimes客户端可以运行,但可以从客户端到服务器使用API。
我错过了什么?
哇listen 82;
应该listen 80;
默认的http请求端口是80。这可以解释ssl为何起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.