gpt4 book ai didi

ruby-on-rails - 使用 rails 和 elastic beanstalk 从 http 转发到 https 时如何防止重定向循环?

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:53 26 4
gpt4 key购买 nike

我刚刚在我的 Rails 应用程序中安装了一个 ssl 证书,我现在正在尝试将所有 http 流量重定向到 https。它托管在 AWS Elastic Beanstalk 上。我已按照说明调整 nginx 配置以服务 ssl。问题是它仍然允许 http 流量。我发现的每个解决方案要么完全失败,要么导致重定向循环。 (向端口 80 的配置添加一个新的服务器 block 以处理重定向;添加 if 指令以在协议(protocol)类型为 http 时重定向;等等)

下面是来自 .ebextensions 的额外 nginx 配置文件:

files:
/etc/nginx/conf.d/https.conf:
content: |
# HTTPS server

server {
listen 443;
server_name localhost;

ssl on;
ssl_certificate /etc/pki/tls/certs/server.crt;
ssl_certificate_key /etc/pki/tls/certs/server.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://my_app.com;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}

location /assets {
alias /var/app/current/public/assets;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}

location /public {
alias /var/app/current/public;
gzip_static on;
gzip on;
expires max;
add_header Cache-Control public;
}
}

/etc/pki/tls/certs/server.crt:
content: |
-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxx
REDACTED CERTIFICATE HERE
xxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

container_commands:
01restart_nginx:
command: "service nginx restart"

此配置有效,但我需要一个重定向策略。我怀疑配置代理到 http://my_app.com 是事实这会导致循环,但我不知道将它发送到哪里让 Rails 接收请求。我究竟做错了什么?如何在不创建循环的情况下将所有 http 流量重定向到 https?顺便说一句,我绝对不想涉及负载均衡器。

感谢任何帮助。

最佳答案

所以答案比我想象的要简单。我仍然不确定如何防止重定向循环,但我可以使用 Rails 设置:

config.force_ssl = true

完成我想做的事情并将所有 http 流量路由到使用 https。

关于ruby-on-rails - 使用 rails 和 elastic beanstalk 从 http 转发到 https 时如何防止重定向循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com