我的 nginx 配置版本1如下:
listen 80;
...
}
然后我将配置更改为 version2,如下所示:
listen 1.2.3.4:80;
...
}
运行后nginx -s reload
,重新加载失败并显示消息nginx: [emerg] bind() to 1.2.3.4:80 failed (98: Address already in use)
如果我首先应用版本 2 配置,然后应用版本 1 配置,重新加载失败并显示消息nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
看起来 nginx reload 在创建新绑定之前不会释放先前的绑定,从而导致冲突?有人可以解释一下这是正常行为吗,或者可以以某种方式覆盖它。
我的 nginx 配置更改非常频繁,并且我不想每次更改配置时都执行 nginx 停止/启动。
答案1
似乎 nginx 正在尝试自动分配地址,尝试在监听中将地址与端口绑定指示。
listen 1.2.3.4:80 bind;