nginx 仅重定向/重写主机名

nginx 仅重定向/重写主机名

当仅使用服务器的短主机名时,我在将 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:

https://stackoverflow.com/questions/10531975/how-to-configure-nginx-to-auto-redirect-to-the-main-hostname

相关内容