多个域的 Nginx 重定向问题
Nginx Redirection Issues with multiple domains
所以我有两个域:
example.com
example.ca
这是一个 docker 容器 运行 nginx,我正在尝试完成 http 到 https 重定向和 www 到非 www 重定向。
主机上的 Docker 绑定到端口 80 和 443。要清楚,进出服务器的流量没有问题。
问题是 www 重定向似乎被忽略了。
当用户转到 http://www.example.com I expect them to be redirected to https://example.com
他们实际上被重定向到 https://www.example.com
因此 https 重定向在 100% 的时间内都有效,但出于某种原因,nginx 无法在没有 www
的情况下执行重定向
值得注意的是,我们正在使用 CloudFlare 来替换我们的自签名证书。那么问题可能是 CloudFlare 造成的吗?
这是我的重定向。
server {
listen 8080;
listen 8443;
server_name www.example.com;
return 301 https://$host$request_uri?$args;
}
server {
listen 8080;
listen 8443;
server_name www.example.ca;
return 301 https://$host$request_uri?$args;
}
# Force http to https
server {
listen 8080;
server_name example.com;
return 301 https://$host$request_uri?$args;
}
server {
listen 8080;
server_name example.ca;
return 301 https://$host$request_uri?$args;
}
您可以重定向用户 www.example.com to https://example.com 使用来自 cloudflare 的页面规则。
这是一个例子:
你也可以尝试使用 nginx 配置
尝试用您的域名替换 $host 这样您就可以
server {
listen 8080;
server_name www.example.com;
return 301 https://example.com$request_uri?$args;
}
也许这样就可以了
所以我能够证明这确实有效。
事实证明我们的部署中存在错误,导致无法加载更新的 Nginx 文件。
修复后,这会按预期运行。
所以我有两个域:
example.com
example.ca
这是一个 docker 容器 运行 nginx,我正在尝试完成 http 到 https 重定向和 www 到非 www 重定向。
主机上的Docker 绑定到端口 80 和 443。要清楚,进出服务器的流量没有问题。
问题是 www 重定向似乎被忽略了。
当用户转到 http://www.example.com I expect them to be redirected to https://example.com
他们实际上被重定向到 https://www.example.com
因此 https 重定向在 100% 的时间内都有效,但出于某种原因,nginx 无法在没有 www
的情况下执行重定向值得注意的是,我们正在使用 CloudFlare 来替换我们的自签名证书。那么问题可能是 CloudFlare 造成的吗?
这是我的重定向。
server {
listen 8080;
listen 8443;
server_name www.example.com;
return 301 https://$host$request_uri?$args;
}
server {
listen 8080;
listen 8443;
server_name www.example.ca;
return 301 https://$host$request_uri?$args;
}
# Force http to https
server {
listen 8080;
server_name example.com;
return 301 https://$host$request_uri?$args;
}
server {
listen 8080;
server_name example.ca;
return 301 https://$host$request_uri?$args;
}
您可以重定向用户 www.example.com to https://example.com 使用来自 cloudflare 的页面规则。
这是一个例子:
你也可以尝试使用 nginx 配置 尝试用您的域名替换 $host 这样您就可以
server {
listen 8080;
server_name www.example.com;
return 301 https://example.com$request_uri?$args;
}
也许这样就可以了
所以我能够证明这确实有效。
事实证明我们的部署中存在错误,导致无法加载更新的 Nginx 文件。
修复后,这会按预期运行。