当仅使用服务器的短主机名时,我在将 https 请求重定向到我的 Nginx 服务器时遇到了一些问题。我尝试了所有示例组合,但似乎没有一个能触发重定向/重写。
例如,服务器名为 web01,我希望所有请求都转到https://web01.domain.com。我的 http -> https 重写功能完美地运行在 FQDN 上。但是,如果我尝试访问https://web01,它将继续尝试加载页面,并且显然会因证书不匹配而出错。我希望它将请求重写到 FQDN。我该如何配置重写/重定向?
我现在拥有的:
server {
listen *:80;
rewrite ^ https://web01.domain.com$request_uri permanent;
}
server {
listen 443 default ssl;
server_name web01.domain.com;
}
答案1
这里的问题是,当您使用 访问服务器时https://web01
,您的浏览器需要获取web01
通用名称的 SSL 证书。
但是,如果您的证书是完整域名web01.domain.com
,您将收到证书错误,因为域名不匹配。
您将需要获取通用名称的 SSL 证书web01
并在 nginx 配置中配置相应的虚拟主机。
答案2
server_name primary.tld secondary.tld;
if ($host != $server_name) {
rewrite ^/(.*) $scheme://$server_name/$1 permanent;
}
这对我来说很有效。答案来自 Matthijs Kooijman: