1
lhbc 2017-01-30 17:01:04 +08:00 via iPhone
不要用 if
不要用 if 不要用 if http 和 https 分开两段 server {} |
2
php7 2017-02-01 10:34:37 +08:00 via Android
提楼上的
|
3
edyuy 2017-02-24 22:22:18 +08:00 1
OpenShift 的架构和一般的 VM 是不一样的,它的 https 由上一层的 nginx 所提供(所以你也发现了你的 nginx 配置里连证书和加密方式都不配置),所以在用户的应用层面拿到的都是 http 的请求(当然,也都是 80 端口的),其他答案那个方式也是不行的,因为你的应用并不会去监听 80 和 443 。正确的做法是,首先把你写的两段 if 替换为
if ($http_x_forwarded_proto != "https") { rewrite ^(.*)$ https://$server_name$1 permanent; } 使用上层 nginx 传来的客户端访问方式进行判断,其中 rewrite 改为 return 301 也是可以的 |