#ruby-on-rails #nginx #https #passenger #http-redirect
#ruby-on-rails #nginx #https #пассажир #http-перенаправление
Вопрос:
Итак, у меня есть эта настройка в моем файле nginx sites-available.
passenger_pre_start http://my_site;
log_format access_with_host '$remote_addr/$http_x_forwarded_for [$time_iso8601] $host '
'"$request" $status in [$request_time] $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
server {
listen 80;
server_name my_site my_site_alias_1 my_site_alias_2;
if ($http_x_forwarded_proto != "https") {
return 301 https://$server_name$request_uri;
}
root /home/ubuntu/apps/sites/current/public/;
rails_env production;
passenger_enabled on;
passenger_min_instances 20;
gzip on;
gzip_static on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_types text/plain text/css application/javascript application/json text/xml application/xml application/xml rss;
gzip_vary on;
gzip_proxied any;
access_log /home/ubuntu/apps/sites/shared/log/access.log access_with_host;
error_log /home/ubuntu/apps/sites/shared/log/error.log error;
Итак, я хочу перенаправить http на https, НО после добавления этих 3 строк
if ($http_x_forwarded_proto != "https") {
return 301 https://$server_name$request_uri;
}
Я получаю сообщение об ошибке: слишком много перенаправлений. Это не имеет смысла, поскольку http фактически перенаправляется на https, но я вообще не вижу сайт, только окно браузера с предыдущей легендой.
Любая помощь была бы очень признательна, чтобы исправить это!
Комментарии:
1. Где находится сервер, который принимает
https
соединения? Если это обратный прокси-сервер перед этим, устанавливаетX-Forwarded-Proto
ли он заголовок?2. Пожалуйста, добавьте серверный блок, который также обслуживает запросы HTTPS.