首页 > 解决方案 > 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 始终打开)。

标签: amazon-web-servicesnginxssl

解决方案


您需要在环境中关闭 force_ssl = true 。这将解决这个问题,该标志虽然做了很多事情,所以您可能需要查看它并返回您单独想要的东西(如 Strict-Transport-Policy 和安全会话 cookie)


推荐阅读