Перенаправление Nginx Http на https фактически не работает

#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.