NGINX配置多个IPV6站点时遇到的问题

前言

晚上折腾服务器,突然发现报错,所有的服务器请求都被指向默认站点,于是回想上次对服务器的操作,嗯,监听IPV6.那么主站既然没问题,那么应该别的站就都没问题啊,其实不然,主站监听,默认是全部监听,也就是说其他域名发来的数据,属于无法找到目标站点,被统一发往主站了。于是开始寻找多IPV6配置方法,开始踩坑之旅……

折腾尝试1

服务器1的配置

server
{
listen 80;
listen 443 ssl http2;
listen [::]:80 ipv6only=on;
listen [::]:443 ipv6only=on ssl http2;
server_name www.sakurabakiyoka.jp;
index index.php ;
root /www/wwwroot/;

}

服务器2的配置

server
{
listen 80;
listen 443 ssl http2;
server_name www.sakurabakiyoka.com;
index index.php ;
root /www/wwwroot/;

}

是这种情况开始出现问题,那么开始尝试监听IPV6

服务器2改为

server
{
listen 80;
listen 443 ssl http2;
listen [::]:80 ipv6only=on;
listen [::]:443 ipv6only=on ssl http2;
server_name www.sakurabakiyoka.com;
index index.php ;
root /www/wwwroot/;
}

开始测试nginx

报错!

Excuse Me??

折腾尝试2

服务器2改为

server
{
listen [::]:80;
listen [::]:443 ssl http2;
server_name www.sakurabakiyoka.com;
index index.php ;
root /www/wwwroot/;
}

恢复正常了,但是问题又来了,IPV4的请求又接不到了…..

成功的尝试

服务器2改为

server
{
listen 80;
listen 443 ssl http2;
listen [::]:80 ;
listen [::]:443 ssl http2;
server_name www.sakurabakiyoka.com;
index index.php ;
root /www/wwwroot/;
}

原因:去掉ipv6only=on即可,因为这个是一次性参数,在一个文件里存在,在第二个,第三个往后的文件不需要写入这个参数….

完美解决问题,IPV4 IPV6正常访问,而且没有出现SSL证书错误。

0
打赏
135
0
吐槽

- 评论

我要吐槽