Как предотвратить петлю перенаправления при пересылке с http на https с использованием rails и эластичного beanstalk? - PullRequest
0 голосов
/ 23 октября 2019

Я только что установил 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 без создания цикла? Кстати, я не хочу привлекать балансировщик нагрузки.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 октября 2019

Так что ответ был проще, чем я думал. Я все еще не знаю, как предотвратить этот цикл перенаправления, но я могу использовать параметр Rails:

config.force_ssl = true

, чтобы выполнить то, что я хочу сделать, и направить весь трафик http для использования https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...