我最近将 nginx v1.8.1 升级到了 v1.10.3。升级后,“标准”的 http 到 https 重定向配置停止工作(它指向 nginx 默认页面)。我通过简单地回滚到预安装升级来验证这一点,它又恢复正常工作了。有人能给我提供答案或建议,说明为什么它停止工作了吗?用于重定向的代码如下:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name www.example.com;
...
}
答案1
我最好的猜测是尝试添加
server_name example.com www.example.com;
到您的端口 80 服务器。它应该根据以下要求从请求中获取Nginx 参考(以下摘录),但值得一试。
$host 的优先顺序如下:请求行中的主机名,或“Host”请求标头字段中的主机名,或与请求匹配的服务器名称
您也可以尝试将端口 80 服务器设为默认服务器。
如果这不起作用,请编辑您的问题并提供更多细节 - 您的配置的更完整版本,curl -i 显示您的请求(即 curl 命令行)和响应标头,以及匹配的 Nginx 错误和该 curl 的访问日志。
这可能行不通,但这是解决问题步骤的一部分,而且对于评论来说太长了。如果人们能在它不起作用时尽量不给我差评,那就太好了。