使用 nginx 和多台服务器从端口 80 重定向到 443

使用 nginx 和多台服务器从端口 80 重定向到 443

首先,我对 nginx 还不太熟悉,有点迷茫……遗憾的是,我没有找到任何解决方案,所以这就是我的问题。如果这是已经存在的问题的重复,我深表歉意,我很高兴看到答案。

我正在构建我的第一个 nginx 服务器,我有两个域名,其中一个有很多子域,我希望在所有这些域名上都设置 SSL 重定向。问题是它只能在 IPv6 监听下工作一次(此处为默认配置),如果我在其他子域上设置相同的配置,nginx 就不会启动(每个子域都有自己的服务器配置文件,并有自己的 80 → 443 服务器重定向)。

server {
listen 443;
listen [::]:443;

## All the config and stuff

}

server {
listen      80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name www.mydomainna.me mydomainna.me;
rewrite     ^   https://$server_name$request_uri? permanent;
}

这是默认的配置文件,它运行良好。

然而,让我感到烦恼的是,在这个完全相同的配置(减去 default_server)上,对于每个子域和我的第二个域名,我必须删除 IPv6,否则 nginx 就无法启动。

server {
listen 443;
listen [::]:443;

## All the config and stuff

}

server {
listen      80;
server_name subdomain.mydomainna.me;
rewrite     ^   https://$server_name$request_uri? permanent;
}

所以我的问题是:我如何才能知道在 IPv6 上监听我的所有其他配置文件?

如果我没有充分解释我的问题,我很抱歉,如果你们中有任何人有解决方案,谢谢。

答案1

根据这一页下面这一行告诉 Nginx 在端口 80 上监听 IP4 和 IP6。

listen [::]:80 default_server;

您有两个指令告诉 Nginx 监听端口 443,这就是您收到重复监听消息的原因。只需删除下面的第一行,它就可以正常工作。

listen 443;
listen [::]:443;

请注意,在 Google 上花了 2 分钟之前,我对 Nginx IP6 一无所知。经过少量研究,我发现了这个解决方案。

相关内容