|  |      1lhbc      2017-01-30 17:01:04 +08:00 via iPhone 不要用 if 不要用 if 不要用 if http 和 https 分开两段 server {} | 
|      2php7      2017-02-01 10:34:37 +08:00 via Android 提楼上的 | 
|      3edyuy      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 也是可以的 |