我有一个带有NGINX反向代理的Rails应用程序,我在AWS上提供服务。我有NGINX设置将所有流量定向到HTTPS。应用程序和NGINX位于Elastic Load Balancer后面的EC2上,我在ELB上终止SSL。当我将域指向ELB时,应用程序运行良好,SSL重定向按预期工作。
我正在尝试使用CloudFront,将ELB作为CloudFront的来源。当我在CloudFront上指向域时,我得到以下之一:
TOO_MANY_REDIRECTS
错误这不是证书(我是从亚马逊生成的),我不认为这是我的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窒息的事吗?