【发布时间】:2016-05-18 20:36:32
【问题描述】:
我正在尝试将所有 HTTP 请求重定向到 HTTPS 请求。我的后端是节点。 这是我在 conf.d/ 上的 nginx 配置:
upstream node {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name mydomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name mydomain.com;
ssl on;
gzip on;
ssl_certificate /etc/letsencrypt/live/mydomain.com/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_session_timeout 5m;
location / {
proxy_pass http://node;
proxy_redirect off;
}
}
这是我的节点配置:
// Calls config file to ExpressJS instance
var app = require('./config/express')();
// Calls config file to MongoDB
require('./config/database')('mongodb://10.0.2.18/mydb');
http.createServer(app).listen(app.get('port'), function(){
console.log('HTTP listening on' + app.get('port'));
});
当我明确使用 HTTPS 协议时,它可以工作。但是,如果我使用 HTTP 协议,它就不起作用,即不会重定向到 HTTPS。
有什么建议吗?
【问题讨论】:
-
对于它的价值,如果其他人在与我相同的情况下看到这一点:我刚刚从旧版本的 Nginx 升级到最新版本以使用 HTTP2,长话短说,我的 HTTPS 重定向没有工作,因为我仍然必须杀死旧的 Nginx 进程并重新启动 Nginx。