Сообщите lighttpd используемый протокол (HTTPS), когда обратный прокси Nginx находится впереди - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть обратный прокси-сервер Nginx, перенаправляющий на сервер lighttpd на той же машине.Этот обратный прокси работает на HTTPS, поэтому я хочу сказать lighttpd, что HTTPS используется в качестве протокола вместо HTTP.Вот моя конфигурация Nginx.

server {

  server_name mydomain.com;
  merge_slashes off;
  rewrite ^(.*?)//+(.*?)$ $1/$2 permanent;

  location / {
      proxy_pass http://localhost:8088/;
      proxy_set_header Host       $host;
      proxy_set_header   X-Real-IP          $remote_addr;
      proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
      proxy_set_header   X-Forwarded-Proto  https;
      proxy_set_header   X-Forwarded-Ssl    on;
  }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    # SSL settings
}

server {
    if ($host = mydomain.com) {
        return 301 https://$host$request_uri;
    }

  listen 80;
  listen [::]:80;
}

На сервере lighttpd запущено приложение python, использующее модуль web.py , но возвращаемое значение web.ctx.protocol по-прежнему равно HTTP когда это должно быть HTTPS .Похоже, lighttpd игнорирует заголовок X-Forwarded-Proto , отправленный Nginx.

Что я делаю не так?Есть ли дополнительные настройки, которые нужно сделать?Спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Вы должны настроить lighttpd для доверия заголовкам из апстрима.Используйте mod_extforward в lighttpd.См. https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModExtForward

Лучше, чем ваши многочисленные заголовки выше, и nginx, и lighttpd (через mod_extforward) поддерживают пересылаемый заголовок RFC 7239.

https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/

Использование "Переадресованный "заголовок должен быть предпочтительным.

...