使用nginx和多个服务器从端口80redirect到443

首先,我对nginx有点新东西,有点失落……我可惜没有find任何解决办法,所以这是我的问题。 如果这是一个已经存在的问题的重复,我很抱歉,我会很高兴看到答案。

我正在构build我的第一个nginx服务器,我有两个域名,其中一个有很多子域名,我希望在所有这些域名上加上SSLredirect。 问题是,它只能在IPv6监听(这里是默认configuration)下工作一次,如果我把相同的configuration放在其他子域上,nginx不会启动(每个子域都有自己的80→443的服务器configuration文件服务器redirect)。

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; } 

这是默认的configuration文件,它像一个魅力。

但是,这是让我感到困惑的是,在这个完全相同的configuration(lessdefault_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; } 

所以我的问题是:我怎么能告诉我所有的其他configuration文件的IPv6?

对不起,如果我没有以适当的方式解释我的问题,如果你们中的任何一个人有解决方法,谢谢。

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

 listen [::]:80 default_server; 

你有两条指令告诉Nginx在端口443上侦听,这就是为什么你得到了重复的侦听信息。 只要删除下面的第一行,它应该工作。

 listen 443; listen [::]:443; 

请注意,我对Nginx IP6一无所知,直到我在Google上花了2分钟。 很less的研究发现了这个解决scheme。