我的 SSL 证书用于 mydomain.com,所以我试图将所有 www.mydomain.com 重定向到不带 www 的。现在,所有这些工作:
http://www.mydomain.com
http://mydomain.com
https://mydomain.com
Run Code Online (Sandbox Code Playgroud)
但是https://www.mydomain.com向浏览器发出“站点不安全”警告......我尝试设置如下重定向,但请告诉我我的脚本在哪里有问题......
server {
listen 80;
server_name www.mydomain.com mydomain.com;
rewrite ^(.*) https://mydomain.com$1 permanent;
client_max_body_size 100M;
location / {
index index.htm index.html index.php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/mysite$fastcgi_script_name;
}
}
server {
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/public.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
server_name www.mydomain.com;
rewrite ^(.*) https://mydomain.com$1 permanent;
}
server {
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/public.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
client_max_body_size 100M;
server_name mydomain.com;
root /var/www/mysite;
index index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/mysite$fastcgi_script_name;
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*sen 14
您的配置脚本没有问题。
使用您当前的配置(假设您安装了标准的单主题 SSL 证书),这不是一个选项。
这样做的原因是 https 连接的工作方式:
当客户端(浏览器)向服务器(nginx)发出 https 请求时,它会通过 SSL 握手启动 SSL 会话。当且仅当握手成功并建立会话时,浏览器才会发送包含主机名的实际 HTTP 请求。因为 SSL/TLS 不仅是为数据连接提供加密的一种方式,也是服务器向客户端进行身份验证的一种方式。作为身份验证过程的一部分,浏览器会验证服务器的身份。验证检查之一是将证书主题名称与浏览器打算从中请求内容的主机名相匹配。如果此验证失败,浏览器会向用户发出警告。
由于验证过程失败,服务器永远不会在端口 443 侦听器上收到 www.mydomain.com 的 HTTP 请求,因此无法向客户端/浏览器发送重定向响应。
要启用从https://www.mydomain.com/到https://mydomain.com 的重定向,您有几个选择,但归根结底是:您需要一个带有每个主机名主题的证书。
SAN证书
mydomain.com和www.mydomain.com
多个 IP 地址
www.mydomain.comwww.mydomain.comhttpsserver以侦听新 IP 地址(仍然是端口 443)www.mydomain.comhttpsserver以使用新证书TLS SNI
www.mydomain.com由于 SNI 的浏览器支持有限,我会避免建议 3。如果您愿意,请查看SNI 上的nginx 文档(页面底部)
更新:一些证书颁发机构提供带有免费附加 SANwww.前缀的单一主题证书。
如果您的域不匹配,您将无法避免“站点不安全”警告。您的证书必须对您要通过 HTTPS 提供服务的每个域都有效,包括仅重定向域。
如果您的证书是无效的“www.example.com”,是只适用于“example.com”,则无法从重定向https://www.example.com/到https://example.com/无安全警告。
| 归档时间: |
|
| 查看次数: |
9925 次 |
| 最近记录: |