Назад | Перейти на главную страницу

Перенаправление на HTTPS с моего балансировщика нагрузки Amazon Elastic Load Balancer

У меня есть приложение rails на 2 инстансах EC2, на котором запущен nginx за Amazon Elastic Load Balancer. Я хотел бы принудительно включить HTTPS, который работал нормально до того, как я добавил в Load Balancer. Сейчас я не совсем понимаю, как это сделать.

У моего балансировщика нагрузки есть 2 слушателя: от 80 до 80 и от 443 до 80 (с сертификатом ssl).

Я попытался добавить следующее правило перезаписи в конфигурацию nginx, но, похоже, это не сработало:

if ($http_x_forwarded_proto != 'https') {
  rewrite ^(.*) https://$host$1 permanent;
}

Любая помощь будет принята с благодарностью!

мы смогли решить эту проблему, выполнив следующие действия:

Сохраняйте конфигурацию вашего ELB, как указано (прослушивание ботов 80 и 443 и пересылка трафика экземплярам на порт 80)

Затем в application_controller.rb сделайте что-то подобное:

class ApplicationController < ActionController::Base
  force_ssl if: :ssl_required?

  # rest of your code here

  private
  def ssl_required?
    # If we came in through the load-balancer, this header will be present
    if request.headers['X-Forwarded-Proto'].present? && !request.ssl?
      return true
    end
    return false 
  end
end