回答
收藏
分享
举报
【高阶】nginx四七层反向代理中使用resolver功能是否要收费
提问于2024-03-27 18:11

浏览 1.7k

文章标签

原因

开源版nginx在四七层代理中  proxy_pass 可以用域名,如    proxy_pass http://域名:端口 ,
但是该域名只有在nginx加载的时候解析一次。如果域名解析的ip发生变化时,nginx还是会把real server指向原来的ip。可能会导致服务不可用。仓促的解决办法:重新 reload nginx。


发现的解决方法,使用resolver功能

四层七层中都可用。

七层的解决方法如下:(四层类似,也要用变量,我用了map可以实现)

server {
    listen 8080;
    server_name localhost;
    ssl_prefer_server_ciphers on;
    #配置域名解析 valid:DNS缓存时间,也可以不指定,缓存时间会默认根据域名的TTL时间 ipv6:on或off,指定该域名解析为ipv6地址。
    resolver 202.102.134.68 114.114.114.114 valid=30 ipv6=off;
    #指定解析域名时,DNS服务器的超时时间,也可以不指定
    resolver_timeout 30s;
    #设置变量,在使用resolver之后,必须使用set设置变量来代替域名,否则会报错
    set $true_url "local.wuanwanghao.top"; 
    location / {
    	proxy_pass http://$true_url:30550;
    }
}

使用resolver后域名的ip变化后,nginx也会把流量转发到新的ip上,问题得到解决。

问题点:请问能否在开源版的nginx在生产环境使用resolver的功能?

查看nginx的官方文档中的resolver内容,都提示了“The parameter is available as part of our commercial subscription.”感觉是要收费。所以想确认下免费版能否在生产使用这个功能?那位大佬清楚,谢谢!

https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver   【七层】官方文档

https://nginx.org/en/docs/stream/ngx_stream_upstream_module.html#resolver  【四层】官方文档



已修改于2024-03-27 18:11



写下您的回答
发表回答
全部回答(0)

按点赞数排序

按时间排序

提问者
小王
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

options请求?需要跨域访问? 

点赞 0
浏览 7.8k

sticky模块只能在linux下吧,win下没有。tomcat好像有个session复制吧,或者可以用共享session。

点赞 0
浏览 7.7k

没办法完全不受影响的,因为mirror是子请求,当子请求未结束时,主请求消耗的内存至少是无法释放的。你可以尝试在/mirror里,把超时时间大幅度调低,包括connect/read/send,再压下看看。

点赞 0
浏览 10.4k