Nginx反向代理运行一天后504超时

e7arh2l6  于 2023-06-21  发布在  Nginx
关注(0)|答案(1)|浏览(153)

我有一个nginx反向代理,代理请求到aws中的私有负载均衡器代理按预期工作,直到一段时间过去,然后当尝试使用相同的端点时,它超时,这里是我的nginx.conf的示例:

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" proxy_pass: "$proxy_host"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  www.proxy.com;
        auth_basic "Restricted Access";
        auth_basic_user_file /etc/nginx/.htpasswd;
        access_log  /var/log/nginx/access.help.log  main;

        location ~* "^/regex/$" {
                proxy_pass          http://example.com/$request_uri;
                proxy_redirect      off;
                proxy_set_header    Host            $host;
                proxy_set_header    X-Real-IP       $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header    Authorization   $http_x_access_token;
        }
     }
 }

如果我运行base64auth字符串,服务器在尝试访问location块之前仍然返回401
下游服务器似乎不是问题所在,因为我可以通过其他方式连接到它并按预期使用它
在此情况下,我似乎无法生成任何帮助我的日志

zzlelutf

zzlelutf1#

Nginx在容器启动时解析主机名,然后仅使用IP进行请求,AWS将IP旋转到其负载均衡器后面。
为了解决这个问题,我将域抽象为服务器块中的一个变量,并在位置块中设置DNS解析器(在AWS中,您的VPC中始终有一个.2例如:10.11.0.2,只需找到您自己的子网范围)

server {
    listen       80;
    server_name  my-server;
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
    set $domain "domain.com";
    location ~* "cool/regex/path" {
            resolver 0.0.0.2 valid=180s;
            set                 $path           "${domain}/${request_uri}";
            proxy_pass          $path;
            proxy_redirect      off;
            proxy_set_header    Host            $host;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    Authorization   $http_x_access_token;
     }
}

这样,它对每个请求使用域而不是IP

相关问题