即使 身堕 地域. 也要 心怀 天堂.

10月 31

0.00 星 (0 分) - 0 人投票

今天在做一个客户的站时,客户要求开启SSL,但是这个站点有三个域名,包含了两个不同的顶级域名。
SSL证书是Trust Asia的免费证书,不支持通配,因此nginx要判断不通域名做跳转。按照客户要求,www.a.com和a.com要跳转443端口,而b.com还是要80端口访问。一开始没想太多,直接if条件中用了&&,但是一直报错。
后来查了下资料原来,nginx的if中不支持&&、||。记录下,以免日后再出错。

附上本次nginx配置:

server
    {
        listen 80;
		listen 443 ssl http2;
		
		ssl  on;     
        ssl_certificate   ***.crt;
        ssl_certificate_key ***.key;

        server_name b.com www.a.com a.com;
        index index.php;
        root  /home/wwwroot/***;

		if ($host = "a.com"){
			set $flaga $server_port; 
		}
		if ($host = "www.a.com"){
			set $flaga $server_port;
		}
		if ($host = "b.com"){
			set $flagb $server_port;
        }
		if ($flaga = 80){
			rewrite ^(.*)$  https://$host$1 permanent;
		}
		if($flagb = 443){
			rewrite ^(.*)$  http://$host$1 permanent;
		}
    }
0.00 星 (0 分) - 0 人投票

发表评论

电子邮件地址不会被公开。 必填项已用*标注