在我的 AWS 環境中,我有一個 nginx 服務器配置為指向它的http > 上游后端配置中的 AWS 應用程式負載均衡器的 DNS 主機名。一切正常,但最近似乎 AWS ALB 的 IP 地址發生了變化(盡管它的 DNS 主機名是不可變的)導致我的應用程式失敗。
挖掘 nginx 日志檔案并檢查dig結果,似乎 nginx 保留了后端主機的 IP 地址,并且每次請求進來時都不會嘗試決議 IP 地址。一旦我重新啟動 nginx 服務,一切都會重新開始。
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
client_max_body_size 50M;
upstream backends {
server internal-private-aws-alb-hostname.elb.amazonaws.com:443;
}
server {
listen 443 ssl;
server_name my.servername.com;
ssl_certificate_key /path/to/key.pem;
ssl_certificate /path/to/cert.pem;
ssl_protocols TLSv1.2;
location / {
proxy_pass https://backends;
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 X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
有沒有人以前經歷過這種行為,如果有的話,是否知道可以通過這種方式使 nginx 更可靠的任何配置更改?我想知道是否有我應該關注的快取配置,但除了ssl_session_cache shared:SSL:10m;在http部分配置之外,其他一切都相當普通。
uj5u.com熱心網友回復:
并不真地。即使您的 NGINX 主機從未快取過 DNS 查詢,權威的 DNS 服務器肯定會快取。ALB 的 A 記錄的 TTL 是多少?(這是一個反問句。)
此外,ALB 的 IP 地址不應在其整個生命周期內更改。ALB 的創建時間戳是多少?這聽起來像是無意中洗掉并重新創建了 ALB。啟用洗掉保護以防止再次發生這種情況。
uj5u.com熱心網友回復:
proxy_pass 不會為每個請求決議 DNS,只會在啟動或配置重新加載時查找。
您可以使用變數 inproxy_pass強制決議 DNS,如下所示:
resolver 127.0.0.1;
set $backend "foo.example.com";
proxy_pass http://$backend;
https://forum.nginx.org/read.php?2,215830,215832#msg-215832
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/394646.html
標籤:nginx nginx-配置 aws 应用程序负载平衡器
