我正在尝试将所有请求重定向到 https,包括子域。所以我这样做:
server_name subdomain.example.com www.subdomain.example.com example.com www.example.com
rewrite ^ https://$server_name$request_uri? permanent;
如果我得到 http://example.com它重定向到 https://example.com .但是如果我得到 www.example.com 它会重定向到 https://subdomain.example.com其中子域是我网站内的微型网站。 知道使用 www 时有什么问题吗?
最佳答案
$server_name
包含处理请求的虚拟主机的 server_name,因为它是在 nginx
配置中定义的。如果服务器包含多个 server_name
,则只有第一个会出现在该变量中。
$host
在这种情况下可能是更好的选择,它包含“按此优先顺序:请求行中的主机名,或‘主机’请求 header 字段中的主机名,或与请求匹配的服务器名称”
即类似于 return 301 https://$host$request_uri;
$http_host
也是一个选项,因为它包含 HTTP“主机” header 字段的内容,如果它出现在请求中的话
关于ssl - NGINX 重定向到 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288990/