Nginx 延迟绑定

aus*_*eek 3 linux nginx

我在 debian 上使用 nginx,并配置了一个服务器

server {
  listen 172.30.0.172 deferred;
}
Run Code Online (Sandbox Code Playgroud)

当我测试 nginx 配置时,我仍然得到

[emerg] bind() to 172.30.0.172:443 failed (99: Cannot assign requested address)
Run Code Online (Sandbox Code Playgroud)

它是一个 ssl 主机,并且正在使用起搏器进行 HA,因此我需要能够推迟绑定

Tha*_*Guy 7

如果我理解正确,您正在尝试让 nginx 侦听在 nginx 启动时本地计算机上可能存在或不存在的 IP,对吗?

如果是这样,那么解决方案就在 nginx 之外,因为 Linux 内核不允许此操作。

要允许进程绑定到不存在的 IP,您可以设置 net.ipv4.ip_nonlocal_bind sysctl。在 Debian/Ubuntu 上,你会这样做:

echo net.ipv4.ip_nonlocal_bind=1 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Run Code Online (Sandbox Code Playgroud)