ssl - NGINX 重定向到 SSL

标签 ssl redirect nginx

我正在尝试将所有请求重定向到 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 时有什么问题吗?

最佳答案

根据 documentation

$server_name 包含处理请求的虚拟主机的 server_name,因为它是在 nginx 配置中定义的。如果服务器包含多个 server_name,则只有第一个会出现在该变量中。

$host 在这种情况下可能是更好的选择,它包含“按此优先顺序:请求行中的主机名,或‘主机’请求 header 字段中的主机名,或与请求匹配的服务器名称”

即类似于 return 301 https://$host$request_uri;

$http_host 也是一个选项,因为它包含 HTTP“主机” header 字段的内容,如果它出现在请求中的话

Rewrite vs Return Pitfalls

关于ssl - NGINX 重定向到 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288990/

相关文章:

ubuntu - 如何获取 nginx 使用的当前 worker 连接?

php - 需要 CURLOPT_CAINFO 吗?

ssl - 无法连接到 https ://localhost with ngrok (using TLS/SSL)

security - SSL 证书和 cURL : certificate bundle or untrusted certificate?

javascript - 有什么方法可以在不触摸窗口或文档的情况下重定向?

redirect - 将当前网站切换到新的 Rails 应用程序 - SEO 重定向最佳实践

java - JSESSIONID cookie 未存储在浏览器中

tomcat - 两个 URL 指向同一个 Tomcat 实例,一个重定向到另一个

redirect - Laravel 5.3 登录成功后重定向到上一页

linux - Nginx url重写错误: [emerg] unexpected "}"