Skip to content

Linux关闭IPv6的情况下,创建反向代理网站会报错 #147

@h4ckm310n

Description

@h4ckm310n

当操作系统关闭IPv6的情况下,创建反向代理网站,会出现如下报错:

ERROR: 检测到配置文件有错误,请先排除后再操作

nginx version: nginx/1.28.1
nginx: the configuration file /www/server/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
nginx: configuration file /www/server/nginx/conf/nginx.conf test failed

原因是创建对应的.conf文件时,没有进行IPv6的判断,直接插入了 listen [::]:80 这样的语句,导致nginx报错。

具体定位:

def write_nginx_conf(self, get):
'''
@name 写入Nginx配置文件
@author wzz <2024/4/18 上午10:36>
@param "data":{"参数名":""} <数据类型> 参数描述
@return dict{"status":True/False,"msg":"提示信息"}
'''
# 这里可能会报错
self.structure_nginx(get)
if len(get.port_list) > 1:
ipv4_port_conf = ""
ipv6_port_conf = ""
for p in get.port_list:
ipv4_port_conf += self._init_proxy_conf["ipv4_port_conf"].format(listen_port=p) + "\n "
ipv6_port_conf += self._init_proxy_conf["ipv6_port_conf"].format(listen_port=p) + "\n "
else:
ipv4_port_conf = self._init_proxy_conf["ipv4_port_conf"].format(listen_port=get.port_list[0])
ipv6_port_conf = self._init_proxy_conf["ipv6_port_conf"].format(listen_port=get.port_list[0])
port_conf = ipv4_port_conf + "\n" + ipv6_port_conf

尝试着去掉添加ipv6_port_conf这一步之后,就不再报错了。因此,在这里应该有一个检测IPv6的步骤。

相对的,创建PHP网站时就没有出现这样的问题,PHP那边的具体代码我还没看,但应该是做了正确的处理。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions