Cloudfront间歇性错误:504,重定向太多?

时间:2016-11-08 18:05:09

标签: nginx amazon-cloudfront

我有一个带有NGINX反向代理的Rails应用程序,我在AWS上提供服务。我有NGINX设置将所有流量定向到HTTPS。应用程序和NGINX位于Elastic Load Balancer后面的EC2上,我在ELB上终止SSL。当我将域指向ELB时,应用程序运行良好,SSL重定向按预期工作。

我正在尝试使用CloudFront,将ELB作为CloudFront的来源。当我在CloudFront上指向域时,我得到以下之一:

  • Chrome上出现TOO_MANY_REDIRECTS错误
  • 页面上的某些资源会加载,有些则不会。一个页面将加载CSS但没有图像,在另一个页面上加载图像但没有CSS。丢失的资产将包含504错误代码。

这不是证书(我是从亚马逊生成的),我不认为这是我的CloudFront设置,因为我在不同的应用程序上使用完全相同的设置而没有任何问题。

我认为这是我的NGINX设置,但我不知道为什么它可以在ELB上运行但不适用于CloudFront。但我是NGINX的新手,可能会做错事。这是我的nginx.conf

worker_processes auto;

events {

}

http {
    gzip              on;
    gzip_http_version 1.0;
    gzip_proxied      any;
    gzip_disable      "msie6";
    gzip_types        text/plain text/xml text/css
                      text/comma-separated-values
                      text/javascript
                      application/javascript
                      application/x-javascript
                      application/json
                      application/atom+xml;

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=APP:100m inactive=24h max_size=2g;
    proxy_cache_key "$scheme$host$request_uri";
    proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
    proxy_http_version 1.1;

    upstream rails_app  {
      server app:3000;
    }

    server {
        listen 80;

        server_name localhost;

        root /var/www/html;

        location / {
          proxy_redirect off;
          proxy_next_upstream error;

          if ($http_x_forwarded_proto != "https") {
            rewrite ^ https://$host$request_uri? permanent;
          }

          try_files $uri $uri/ @proxy;
        }

        location ~* \.(jpg|jpeg|svg|png|gif|ico|css|js|eot|woff|woff2|map)$ {
            proxy_cache APP;
            proxy_cache_valid 200 1d;
            proxy_cache_valid 404 5m;
            proxy_ignore_headers "Cache-Control";
            expires 1d;

            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-Proto https;
            add_header X-Cache-Status $upstream_cache_status;

            proxy_pass http://rails_app;
        }

        location @proxy {
            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-Proto https;

            proxy_pass  http://rails_app;
        }
    }
}

你能看到任何会让CloudFront窒息的事吗?

0 个答案:

没有答案