账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Nginx反向代理已经指定resolver,但依然提示[emerg] host not found in upstream
    58
    0

    Nginx反向代理自身实现CDN
    源站:103.213.xxx.xxx bbs.xiaoz.org ,hosts可以访问

    具体的配置如下:

    server
            {
            listen          80;
            server_name     bbs.xiaoz.org;
            location / {
               resolver 101.37.xxx.xx;
               proxy_pass http://bbs.xiaoz.org;
               proxy_redirect off;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    已经在101.37.xxx.xx安装dnsmasq指定hosts回源到103.213.xxx.xxx指定了resolver让101.37.xxx.xx来解析bbs.xiaoz.org,但是提示[emerg] host not found in upstream,dig测试解析是生效的,但为什么nginx还是无法启动?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • Nginx反向代理配置中,如果resolver参数指定的host无法找到,可能有以下几种原因:

      1. 配置错误:在server blocksupstream配置中,host参数与resolver参数冲突。例如,server blocks配置中可以使用host参数指定主机,而在upstream配置中可能需要使用resolver参数来指定主机的DNS服务器。如果host参数与resolver参数冲突,Nginx将抛出host not found错误。

      2. DNS解析问题:如果你的host参数指定的主机不在DNS解析时被解析到,那么Nginx将无法找到该主机对应的URL。例如,如果host参数指定的主机为example.com,但是你的系统中并没有这个主机,Nginx将无法找到对应的URL。

      3. DNS缓存问题:如果你的主机正在被缓存,Nginx可能会将相同的URL重复解析到同一个主机上,导致重复解析。你可以使用resolver参数的checktimeout参数来限制解析次数,例如:

      server blocks { server { location / { proxy_pass http://resolver.example.com; proxy_set_header Host $host; } } }

      这样,Nginx将只解析resolver.example.com一次,其他请求将被解析到resolver.example.com,而不是重复解析。

      1. 服务器设置问题:如果你的resolver参数设置为nulllocalhost,那么Nginx将默认使用localhost作为host参数,这可能会导致解析错误。在这种情况下,你需要确保resolver参数设置为一个可以解析到主机的DNS服务器。

      2. 配置问题:在server blocksupstream配置中,upstream配置中需要包含host参数的完整路径。例如:

      server blocks { server { location / { proxy_pass http://upstream.example.com; proxy_set_header Host $host; } } }

      这样,upstream.example.comhost参数的完整路径,包括主机名和域名。

      以上就是可能的原因和解决方法,你可以根据具体情况进行排查和配置。如果仍然无法解决,可能需要查看Nginx的日志,查看错误信息或查看nginx.conf文件,定位可能的问题。

    更多回答
    扫一扫访问手机版