amazon-web-services - AWS 网络负载均衡器、Nginx、重定向过多
问题描述
我们目前有 2 个 Nginx 盒子直接从网络接收请求,并试图在它们前面设置一个 AWS 网络负载均衡器。但是,我们不断收到太多重定向问题......
我已经做了一些研究并按照一些说明进行操作,但它仍然不起作用。这是我们当前的设置
负载均衡器在端口 80 和 443 上有 2 个侦听器 负载均衡器上加载了证书并由 ACM 管理
在端口 80 上都将流量直接发送到目标组,目标组有 2 个 Nginx 盒子,配置如下
server {
listen 80;
server_name test.server.com;
client_max_body_size 4M;
keepalive_timeout 5;
root /etc/project/public;
try_files $uri/index.html $uri.html $uri @app;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
location @app {
add_header X-Frame-Options "";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
对我来说似乎很标准,但它不起作用。静态文件的服务没有问题,但@app 块没有收到任何对后端(独角兽)的请求。显然,这是一个更新的配置,我之前的配置通过正确的 SSL 设置将端口 80 重定向到端口 443,但是由于我们现在在负载均衡器上安装了 SSL,因此我们已将其从此处删除。
我还尝试在关闭 SSL 的情况下设置 443 端口,但这似乎不适用于 Nginx(SSL 始终打开)。
解决方案
您需要在环境中关闭 force_ssl = true 。这将解决这个问题,该标志虽然做了很多事情,所以您可能需要查看它并返回您单独想要的东西(如 Strict-Transport-Policy 和安全会话 cookie)