我有一个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
下游服务器似乎不是问题所在,因为我可以通过其他方式连接到它并按预期使用它
在此情况下,我似乎无法生成任何帮助我的日志
1条答案
按热度按时间zzlelutf1#
Nginx在容器启动时解析主机名,然后仅使用IP进行请求,AWS将IP旋转到其负载均衡器后面。
为了解决这个问题,我将域抽象为服务器块中的一个变量,并在位置块中设置DNS解析器(在AWS中,您的VPC中始终有一个.2例如:10.11.0.2,只需找到您自己的子网范围)
这样,它对每个请求使用域而不是IP