首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更新nginx

动态更新nginx
EN

Stack Overflow用户
提问于 2021-03-29 02:33:32
回答 1查看 200关注 0票数 0

我有一个在线软件运行在我自己的本地服务器与互联网的固定IP地址。

我正在考虑租用一个基于云的nginx/ubuntu的小型代理服务器来接收流量,然后将其转发到我的本地服务器。因此,我将从我的防火墙设备上的云主机保护(DDoS等)中受益,并且我还可以获得两个动态IP连接,而不是一个固定IP (稳定性改进)。

在此场景下,如何保持云nginx .conf文件自动更新?或者也许这个设置中有一个缺陷?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-03-29 18:54:53

需要调用nginx -s reloadkill -s HUP $(cat /run/nginx.pid)强制nginx实例重新加载配置。你可以在你的动态IP更新后这样做(例如,在路由器端通过敲击代理服务器来触摸一些URL作为回调,在那里导致这样的命令调用)。

UPD这可以是一个nginx位置,它将调用一些脚本(php、perl、python等),例如通过 can或直接(例如lua)更新一些包含文件中的地址并触发重新加载信号。

例如,在使用lua脚本的情况下,您的nginx.conf可能如下所示:

代码语言:javascript
复制
# list of backend hosts referenced by dynamic IPs (updated in secret-update-my-ip):
upstream backend {
  include /etc/nginx/my-backend-srv.conf;
}
# location referencing backend:
location ~ \.php$ {
  fastcgi_pass   backend;
  # ...
}

# ...

location = /secret-update-my-ip {
  auth_basic "Technical user area";
  #... provide auth-setting here (file, etc) ...
  content_by_lua_block {
    -- write upstream server with IP of requesting host - $remote_addr:
    local f = io.open("/etc/nginx/my-backend-srv.conf", "w")
    f:write("server " .. ngx.var.remote_addr .. ":8080;\n")
    f:close()
    -- signaling reload:
    os.execute("nginx -s reload")
  }
}

因为这个include (/etc/nginx/my-backend-srv.conf)是一个普通的nginx配置文件,它可以包含在您的nginx中的某个地方,所以您可以将IP存储为变量声明(如

"set $my_ip "..ngx.var.remote_addr..";\n"),并将其作为$my_ip变量包含在服务器或位置部分中。

要更新动态IP,每次其IP发生更改时,从本地主机(或路由器)调用URI https://host.example.com/secret-update-my-ip (用户名和密码在该位置有效)就足够了。

正如前面提到的敲门(无论是基于网页、URL还是端口范围),你可以使用一些外部程序,例如fail2ban监控一些日志(例如,注意到你的敲门URL调用),并与action.d/nginx-block-map.conf类似的动作做出反应,这些动作也改变了一些包括(在这种情况下是地图)和重新加载nginx。

另一种方法是实现或使用Dyn-DNS服务,例如在某个地方安装自己的DNS服务器,创建一些具有小TTL的完全限定域名映射,并在每次更改时将此主机的IP更新为您的动态IP (最好使用DNS服务器的缓存失效)。

然后,您可以在upstream或proxy_pass指令中将其用作主机名,参见https://serverfault.com/questions/240476/how-to-force-nginx-to-resolve-dns-of-a-dynamic-hostname-everytime-when-doing-p/593003#593003

只需注意,这两种方法都可能导致某些不可用,这是由于IP切换和代理端IP完全更新和刷新之间的一些延迟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66844858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档