【发布时间】:2016-02-12 17:55:42
【问题描述】:
在 nginx 中,我试图找出处理重定向的最佳方法,以强制所有非 https 流量到 https,当且仅当流量不在 /assets/* 路径中时。
用例:通过 AWS CloudFront 启用 javascript 和 css 缓存,而无需从服务器链接 SSL 证书。
这是我正在尝试的:
server {
listen 80;
if ( $http_x_forwarded_proto = "http" ) {
set $redir please_redir;
}
location ~ ^/assets/|favicon.ico {
set $redir dont_redir;
root /home/deploy/www/public;
gzip_static on;
expires max;
add_header Cache-Control public;
}
if ( $redir = please_redir ) {
return 301 https://$http_host$request_uri;
}
location / {
proxy_pass http://127.0.0.1:9292/;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我也尝试将 'please_redir' 用引号括起来,但没有成功。有任何想法吗?欢迎其他可行的解决方案。请记住,它必须是非 https 请求并且不在 /assets/ 路径中。谢谢!
【问题讨论】:
标签: ruby-on-rails nginx url-redirection amazon-cloudfront