当操作系统关闭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那边的具体代码我还没看,但应该是做了正确的处理。
当操作系统关闭IPv6的情况下,创建反向代理网站,会出现如下报错:
原因是创建对应的.conf文件时,没有进行IPv6的判断,直接插入了
listen [::]:80这样的语句,导致nginx报错。具体定位:
BaoTa/mod/project/proxy/comMod.py
Lines 349 to 368 in 173e861
尝试着去掉添加ipv6_port_conf这一步之后,就不再报错了。因此,在这里应该有一个检测IPv6的步骤。
相对的,创建PHP网站时就没有出现这样的问题,PHP那边的具体代码我还没看,但应该是做了正确的处理。