IP和Nginx作为反向代理时出错

最高54

我将Nginx配置为简单的反向代理。

我只是在使用基本设置

location / {
    proxy_pass foo.dnsalias.net;
    proxy_pass_header Set-Cookie;
    proxy_pass_header P3P;
}

问题在于,经过一段时间(几天)之后,nginx后面的站点变得无法访问。Indead nginx尝试调用一个错误的ip(nginx后面的站点在我的盒子后面的家中,并且我正在使用dyn-dns,因为我的ip不是固定的)。此dyn-dns始终有效(我可以直接致电我的网站),但由于晦涩的原因,Nginx陷入了困境。

如前所述,nginx只是在一段时间后给我504网关超时。当我在家中更改IP时,似乎出现了错误。这是错误日志的示例:

[error] ... upstream timed out (110: Connection timed out) while connecting to upstream, client: my.current.ip, server: myreverse.server.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://my.old
.home.ip", host: "myreverse.server.com"

那么您知道nginx为什么使用ip而不是DN吗?

泽维尔·卢卡斯(Xavier Lucas)

如果该proxy_pass值不包含变量,则nginx会在加载配置时将域名解析为IP,并缓存它们,直到您重新启动/重新加载它为止。从性能的角度来看,这是可以理解的。

但是,在动态DNS记录更改的情况下,可能不需要这样做。因此,根据您是否拥有许可证,有两个选项可用。

商业版(Nginx +)

在这种情况下,请使用上游块并指定需要使用特定解析器定期解析的域名。使用valid=time参数可以覆盖记录TTL 指令resolve参数server将强制DN定期解析。

http {    

    resolver X.X.X.X valid=5s;

    upstream dynamic {
        server foo.dnsalias.net resolve;
    }

    server {

        server_name www.example.com;

        location / {
            proxy_pass http://dynamic;
            ...
        }

    }

}

Nginx + 1.5.12中添加了此功能。

社区版本(Nginx)

在这种情况下,您还将需要一个自定义解析器,就像前面的解决方案一样。但是要解决不可用的上游解决方案,您需要在proxy_pass指令中使用变量这样,nginx也将使用解析器,以遵守valid参数指定的缓存时间例如,您可以将域名用作变量:

http {  

    resolver X.X.X.X valid=5s;

    server {

        server_name www.example.com;
        set $dn "foo.dnsalias.net"; 

        location / {
            proxy_pass http://$dn;
            ...
        }

    }

}

然后,您可能需要添加一个proxy_redirect指令来处理重定向。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Nginx作为反向代理时无法缓存静态文件

来自分类Dev

使用Nginx容器作为反向代理时的原始URL

来自分类Dev

反向代理时快速出错

来自分类Dev

Couchbase Nginx插件模块作为反向代理

来自分类Dev

在Docker上将NGINX作为反向代理运行?

来自分类Dev

Nginx作为服务301的反向代理

来自分类Dev

Nginx 作为 IIS 上的反向代理

来自分类Dev

当使用NginX作为反向代理时,如何退回到维护URL?

来自分类Dev

在unbuntu和nginx上托管多个ASP NET Core网站作为反向代理

来自分类Dev

与Docker和Nginx一起使用反向代理时出现502错误的网关

来自分类Dev

如何使用apache2和nginx作为反向代理以不同的用户和目录身份运行网站

来自分类Dev

Nginx作为AWS ALB(自签名)的反向代理

来自分类Dev

获取以nginx作为反向代理运行的Apache2

来自分类Dev

如何配置NGINX作为不同端口号的反向代理?

来自分类Dev

使用nginx作为节点反向代理服务根静态文件

来自分类Dev

NginX作为多个子域的HTTPS反向代理吗?

来自分类Dev

无法从Java中的Nginx反向代理获取远程IP

来自分类Dev

Ghost如何从Nginx(反向代理)获取真实IP?

来自分类Dev

使用Nginx作为Gunicorn前面的反向代理时,Django应用程序中的REMOTE_ADDR值为空

来自分类Dev

使用Postgres和Gunicorn + Nginx作为反向代理的Django应用程序中'类型inet的输入语法无效'db错误

来自分类Dev

Nginx反向代理设置

来自分类Dev

Nginx反向代理设置

来自分类Dev

反向代理Nginx本身

来自分类Dev

Nginx反向代理设置

来自分类Dev

nginx 内部反向代理

来自分类Dev

反向代理时如何让 Nginx 传递外部 DNS 名称?

来自分类Dev

WordPress的码头工人图像和nginx反向代理

来自分类Dev

Nginx 多工作负载配置 - 网站和反向代理

来自分类Dev

如何使用Nginx作为反向代理在Spring Boot应用程序上的嵌入式Tomcat访问日志中记录真实的客户端IP?

Related 相关文章

  1. 1

    使用Nginx作为反向代理时无法缓存静态文件

  2. 2

    使用Nginx容器作为反向代理时的原始URL

  3. 3

    反向代理时快速出错

  4. 4

    Couchbase Nginx插件模块作为反向代理

  5. 5

    在Docker上将NGINX作为反向代理运行?

  6. 6

    Nginx作为服务301的反向代理

  7. 7

    Nginx 作为 IIS 上的反向代理

  8. 8

    当使用NginX作为反向代理时,如何退回到维护URL?

  9. 9

    在unbuntu和nginx上托管多个ASP NET Core网站作为反向代理

  10. 10

    与Docker和Nginx一起使用反向代理时出现502错误的网关

  11. 11

    如何使用apache2和nginx作为反向代理以不同的用户和目录身份运行网站

  12. 12

    Nginx作为AWS ALB(自签名)的反向代理

  13. 13

    获取以nginx作为反向代理运行的Apache2

  14. 14

    如何配置NGINX作为不同端口号的反向代理?

  15. 15

    使用nginx作为节点反向代理服务根静态文件

  16. 16

    NginX作为多个子域的HTTPS反向代理吗?

  17. 17

    无法从Java中的Nginx反向代理获取远程IP

  18. 18

    Ghost如何从Nginx(反向代理)获取真实IP?

  19. 19

    使用Nginx作为Gunicorn前面的反向代理时,Django应用程序中的REMOTE_ADDR值为空

  20. 20

    使用Postgres和Gunicorn + Nginx作为反向代理的Django应用程序中'类型inet的输入语法无效'db错误

  21. 21

    Nginx反向代理设置

  22. 22

    Nginx反向代理设置

  23. 23

    反向代理Nginx本身

  24. 24

    Nginx反向代理设置

  25. 25

    nginx 内部反向代理

  26. 26

    反向代理时如何让 Nginx 传递外部 DNS 名称?

  27. 27

    WordPress的码头工人图像和nginx反向代理

  28. 28

    Nginx 多工作负载配置 - 网站和反向代理

  29. 29

    如何使用Nginx作为反向代理在Spring Boot应用程序上的嵌入式Tomcat访问日志中记录真实的客户端IP?

热门标签

归档