Как я могу принудительно перенаправить http-запрос на https в автономном режиме для пассажиров с помощью эластичного балансировщика нагрузки aws?

Я использовал автономное приложение для пассажиров в своем приложении. в настоящее время мое приложение работает как на http, так и на https. Я хочу перенаправить весь HTTP-запрос на https. Я использовал балансировщик нагрузки в своем приложении. Я читаю эту статью

https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/

https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template

http://code.eklund.io/blog/2015/03/17/managing-rewrites-for-a-rails-app-on-heroku-with-nginx-plus-phusion-passenger/

я пробовал эти 2 метода

1)

 if ($http_x_forwarded_proto = "http") { 
            return 301 https://$host$request_uri; 
        }

2)

if ($http_x_forwarded_proto != "https") {
      rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
  }

Я пробовал весь процесс одинаково. но каждый раз, когда он переходит в бесконечный цикл, и перед тем, как я начну пассажира, экземпляр завершает работу и создает новый экземпляр из-за слишком большого тайм-аута запроса.

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

Заранее спасибо :)


person Vishal    schedule 10.11.2017    source источник
comment
Основываясь на некоторых предыдущих проблемах с https, я обнаружил, что в конфигурации NGINX вы должны добавить: proxy_set_header X-Forwarded-Proto https; Однако, если вы отредактируете свое сообщение и покажете нам свою конфигурацию NGINX, мы сможем вам больше помочь.   -  person Roc Khalil    schedule 11.11.2017
comment
@RocKhalil У меня нет пассажирского + NGINX, я использовал Passenger Standalone. Итак, у меня нет конфигурации nginx. У меня есть только автономная конфигурация пассажира, которая находится в формате erb.   -  person Vishal    schedule 13.11.2017
comment
Ох, ладно. Обычно я использую puma и NGINX; извините, что не помогло :-)   -  person Roc Khalil    schedule 13.11.2017
comment
Вы используете балансировщик сетевой нагрузки, балансировщик нагрузки приложений или классический балансировщик нагрузки в ELB?   -  person Camden Narzt    schedule 13.11.2017
comment
@CamdenNarzt классический балансировщик нагрузки   -  person Vishal    schedule 14.11.2017
comment
Хорошо, похоже, вы все делаете правильно, можете ли вы предоставить журналы пассажиров, когда возникнет проблема?   -  person Camden Narzt    schedule 14.11.2017
comment
@CamdenNarzt Когда я останавливаю пассажира и перезапускаю сервер, пассажир автоматически выключается. в настоящее время у меня нет журнала, я думаю, когда я останавливаю пассажира, и пользователь пытается получить доступ к приложению. время ожидания запроса сгенерировано и связано с созданием этого нового экземпляра. потому что через некоторое время после остановки пассажира пассажир отключился автоматически. У меня один вопрос, пассажир и балансировщик нагрузки - это разные вещи. Правильно ? это связано?   -  person Vishal    schedule 16.11.2017
comment
Да они разные. Балансировщик нагрузки ELB распределяет входящие сетевые запросы группе экземпляров EC2, на всех которых работает Passenger. Passenger, в свою очередь, запускает ряд рубиновых процессов, запускающих ваше приложение, и распределяет полученные запросы по этим рубиновым процессам. Таким образом, Passenger - это другой вид балансировщика нагрузки, работающий на уровне сервера, а не на уровне сети.   -  person Camden Narzt    schedule 16.11.2017
comment
Каков результат curl -I http://your.domain.here.tld   -  person Camden Narzt    schedule 16.11.2017
comment
@CamdenNarzt Пожалуйста, проверьте мой комментарий   -  person Vishal    schedule 17.11.2017
comment
проверьте phusionpassenger.com/library/config/standalone/ ссылка /   -  person puneet18    schedule 17.11.2017
comment
Перенаправление http- ›https не происходит, вместо этого возвращается другое перенаправление. Можете ли вы опубликовать шаблон конфигурации nginx, который вы используете? Также, как сказал @ puneet18, обязательно используйте параметры ssl, такие как ssl_port, ssl_certificate и ssl_certificate_key.   -  person Camden Narzt    schedule 17.11.2017
comment
@ puneet18 @CamdenNarzt Вот файл https://textb.org/t/vishal/. я точно использовал это https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template. @ puneet18, да, я также использовал весь сертификат ssl, например passenger start -p 80 --ssl --ssl-certificate /etc/ssl/ssl-bundle.crt --ssl-certificate-key /etc/ssl/app.singaporeswimming.key --ssl-port 443 -d -e production   -  person Vishal    schedule 20.11.2017
comment
@CamdenNarzt Вы проверили мой комментарий?   -  person Vishal    schedule 21.11.2017
comment
Этот шаблон устарел, если это то, что вы получили от запуска cp $(passenger-config about resourcesdir)/templates/standalone/config.erb nginx.conf.erb, вам необходимо обновить Passenger.   -  person Camden Narzt    schedule 21.11.2017
comment
я беру с этого официального сайта, и он не устарел phusionpassenger.com/library/config/standalone/   -  person Vishal    schedule 22.11.2017
comment
@vishal, да, посмотрите на github. com / phusion / пассажира / blob / stable-5.1 / resources / это не то же самое, что у вас на textb.org/t/vishal.   -  person Camden Narzt    schedule 23.11.2017
comment
@CamdenNarzt да, я тоже пробовал это, но это дает мне синтаксическую ошибку для include_passenger_internal_template. Я перепробовал весь код этого файла, это проблема с версией? пассажирская версия Phusion Passenger version 5.0.14.   -  person Vishal    schedule 24.11.2017
comment
Собственно, вы должны использовать Passenger 5.1.12.   -  person Camden Narzt    schedule 24.11.2017
comment
@CamdenNarzt Хорошо, я обновлю версию Passenger и опоздаю, вы знаете, что будет дальше. Спасибо большое за вашу помощь :)   -  person Vishal    schedule 27.11.2017
comment
@CamdenNarzt Наконец-то обновил версию пассажира. гем версия пассажира 5.3.3 и установленная пассажирская система Phusion Passenger version 4.0.53. я забыл, где написать это условие if :(. Вы можете мне помочь?   -  person Vishal    schedule 30.07.2018


Ответы (2)


Я надеюсь, что все ваши сертификаты установлены правильно и указывают на правильный путь. Если нет, проверьте конфигурацию ниже

Passenger.json

{
  "environment": "production",
  "instance_registry_dir": "/var/run/passenger-instreg",
  "daemonize": true,
  "user": "myappuser",
  "port": 443,
  "ssl": true,
  "ssl_certificate": "/path/to/ssl_cert.pem",
  "ssl_certificate_key": "/path/to/ssl_key.pem",
  "nginx_config_template": "/path/to/nginx.conf.erb"
}

Вам необходимо использовать ту же конфигурацию, которую вы используете для nginx для перенаправления с http на https.

http {
     server_tokens off;
        server {
            listen 80 default_server;
            listen [::]:80 default_server;

            # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
             return 301 https://$host$request_uri;
     }

Последняя ссылка
Вот конфигурация автономного пассажира для перенаправления с http на https latest_link

См. Эту ссылку

person Aniket Shivam Tiwari    schedule 23.11.2017
comment
когда я применил ваше решение, пассажир отключился автоматически. всякий раз, когда я пытаюсь остановить и завести пассажира, пассажир сам отключается. и новый экземпляр создается несколько раз. я не знаю, в чем именно проблема. - person Vishal; 24.11.2017
comment
На моем промежуточном сервере я не применял балансировщик нагрузки. и эта конфигурация успешно применена при постановке, перенаправление HTTP-запроса на https, но на моем реальном сервере он не работает из-за того, что может быть балансировщик нагрузки. - person Vishal; 24.11.2017
comment
Еще одна вещь, я думаю, что значение порта должно быть 80, а значение ssl-порта будет 443. - person Vishal; 24.11.2017
comment
Я также даю вам еще одну ссылку, касающуюся конфигурации автономного пассажира, она может вам помочь. - person Aniket Shivam Tiwari; 24.11.2017
comment
Я не использовал AWS Elastic Beanstalk :(. Когда я копирую файл config.erb пассажира, он дает мне этот код textb.org/t/vishal. следует ли обновить весь файл с помощью этого кода phusionpassenger.com/library/deploy/standalone/prod_ssl.html. потому что я уже пробовал раньше. но это давало мне синтаксическую ошибку для include_passenger_internal_template этой команды. - person Vishal; 24.11.2017
comment
Вам не нужно копировать весь файл. Вам нужно только скопировать часть перенаправления из этого файла - person Aniket Shivam Tiwari; 24.11.2017
comment
чем он делает одно и то же снова и снова. автоматическое отключение пассажира. и создайте новый экземпляр без перенаправления http на https. - person Vishal; 24.11.2017
comment
Привет, я обновил версию пассажира, но забыл, где добавить строку https. Можете ли вы помочь мне ? - person Vishal; 30.07.2018

Вы можете сделать это на уровне прокси или на уровне приложения. Чтобы сделать это на уровне приложения:

# config/environments/production.rb
...
config.force_ssl = true
...
person Daniel Westendorf    schedule 10.11.2017
comment
Я попробовал это в первый раз, но из-за балансировщика нагрузки он заходит в бесконечный цикл. - person Vishal; 11.11.2017
comment
Это приведет к бесконечному циклу и, в конце концов, потерпит неудачу, как указал Вишал. - person Sigu Magwa; 31.05.2018
comment
на уровне прокси, или на уровне приложения. Перенаправление на обоих действительно вызовет цикл перенаправления. - person Daniel Westendorf; 31.05.2018