Обратный прокси Lighttpd HTTPS для другой сервер по HTTP

У меня есть сервер Lighttpd, работающий по HTTPS, и я хочу, чтобы один подкаталог на сервере действовал как обратный прокси-сервер для отдельного сервера, работающего по HTTP. Я пробовал следовать руководствам по перезаписи прокси и URL, но что-то связанное с тем, как настроен SSL, мешает.

$SERVER["socket"] == ":81" {
    url.rewrite-once = ( "^/directory/(.*)$" => "/index.html" )
    proxy.server  = ( "" => ( "" => ( "host" => "192.0.0.1", "port" => 123 )))
}

$HTTP["scheme"] == "http" {
     $HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0$0")
     }
}

$SERVER["socket"] == ":443" {
        ssl.engine = "enable"
        ssl.ca-file = "/etc/lighttpd/fullchain.pem"
        ssl.pemfile = "/etc/lighttpd/server.pem"
        $HTTP["url"] =~ "^/directory/" {
               proxy.server = ( "" => ( "" => ( "host" => "127.0.0.1", "port" => 81)))
        }
}

Я хотел, чтобы переход в / directory / перенаправлял вас на 192.0.0.1:123/index.html. Я следовал этому руководству , в котором упоминалось выполнение первого перенаправления на порт 81, а затем перенаправление порта 81 на второй сервер.

Похоже, это не работает и просто застревает в цикле перенаправления, и всегда возвращает 301 на сайт https.

Если я не сделаю: 81 редирект, я могу заставить нижний proxy.server перенаправить в нужное место, но при этом останется конец / directory /, который не попадет туда, где мне это нужно.

Спасибо.

0
задан 6 August 2018 в 19:14
1 ответ

lighttpd 1.4.46 и более поздние версии имеют функцию mod_proxy, позволяющую переопределять префиксы url-пути. Смотрите директиву 'proxy.header' и субвариант 'map-urlpath'.

https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy

Эта возможность позволяет избежать двойной прокси-конфигурации, которую вы пытаетесь использовать.

lighttpd 1.4.46 был выпущен чуть более года назад и последним релизом lighttpd является lighttpd 1.4.51.

.
0
ответ дан 5 December 2019 в 05:25

Теги

Похожие вопросы