V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Huozy
V2EX  ›  NGINX

不懂就问,有关 nginx 和 hosts 的问题

  •  
  •   Huozy · 195 天前 · 935 次点击
    这是一个创建于 195 天前的主题,其中的信息可能已经有所发展或是发生改变。

    nginx 配置如下

    server {
          listen       9005;
          server_name  192.168.1.1;
          location /135app/ {
              proxy_pass http://test135:8060;
          }
          location /246app/ {
              proxy_pass http://test246:8060;
          }
    }
    

    hosts 配置如下

    10.10.1.2	test135
    10.10.1.3	test135
    10.10.2.5	test246
    

    问题 1:10.10.1.2 失效不通的时候,nginx 是否会自动请求到 10.10.1.3 ? 不会的话,怎么配置 nginx 可以做到动态的解析域名?

    问题 2:我实质是想通过域名和 DNS 去访问,若问题 1 无法解决的话,我在 resolv.conf 中添加 dns 地址后,nginx 配置需要做更改吗?

    5 条回复    2021-05-26 22:29:38 +08:00
    ik
        1
    ik  
       195 天前 via iPhone
    问题 1 upstream
    问题 2 只要访问的 server_name 没变,配置就不用调整
    justest123
        2
    justest123  
       195 天前
    回答下问题 1 (不一定都对,欢迎打脸),因为你这是配本机的 hosts,单次请求时应该是不会自动把失败的请求再转发到 10.10.1.3 去的,非 plus 版本的 Nginx 的动态解析域名需要用到 Nginx 的 resolver 配置以及域名服务器,可以参考[官方文档]( https://nginx.org/en/docs/http/ngx_http_core_module.html#resolver)中的介绍。

    另外还有个思路是用 upstream,这种应该更适合 10.10.1.2 失效后还能恢复的情况,配置大概是:

    ```
    upstream test135 {
    least_conn;
    server 10.10.1.2:8060 max_fails=3 fail_timeout=5s;
    server 10.10.1.3:8060 max_fails=3 fail_timeout=5s;
    }
    ```
    akira
        3
    akira  
       195 天前
    域名解析你应该是用专门的域名解析服务来完成。

    需要尝试多个后端做负载均衡的话,可以用 upstream,应该能满足你的需求了
    Huozy
        4
    Huozy  
    OP
       195 天前
    @ik #1 好的 感谢 我尝试下
    Huozy
        5
    Huozy  
    OP
       195 天前
    @justest123 #2 谢谢~ 我尝试下
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3849 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:47 · PVG 09:47 · LAX 17:47 · JFK 20:47
    ♥ Do have faith in what you're doing.