Я только что установил ssl-сертификат в своем приложении на Rails и сейчас пытаюсь перенаправить весь http-трафик на https. Он размещен на эластичном бобовом стебле AWS. Я следовал инструкциям по настройке конфигурации nginx для обслуживания ssl. Проблема в том, что он по-прежнему разрешает http-трафик. Каждое решение, которое я нашел, либо просто терпело неудачу, либо приводило к циклу перенаправления. (добавление нового блока сервера в конфигурацию для порта 80 для обработки перенаправления; добавление директив if для перенаправления при типе протокола http; и т. д.)
ниже - это мой дополнительный файл конфигурации nginx из .ebextensions
:
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 без создания цикла? Кстати, я не хочу привлекать балансировщик нагрузки.
Любая помощь приветствуется.