Подкаталог обратного прокси-сервера nginx vai proxy_pass для Bookstack

Я использую док-контейнер Bookstack от https://github.com/linuxserver/docker-bookstack

Контейнер работает на хосте Ubuntu, который я могу отлично использовать, когда обращаюсь к нему напрямую через его http: //:

У меня есть сервер nginx, работающий на хосте Windows, который я собираюсь настроить, чтобы при посещении https://myhost.tld/kb он проксировал его на хост Ubuntu. Ниже приведена конфигурация ngnix для этого:

        location ~/kb(.*)$ {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://<ubuntu-ip>:<port>$1;
        }

В контейнере Bookstack для файла .env APP_URL установлено значение https://myhost.tld/kb.

Когда я захожу в https://myhost.tld/kb, никакие статические ресурсы не загружаются.

введите описание изображения здесь

Я пробовал различные комбинации совпадений местоположения, например /kb/ переписывание URL-адресов и т. Д. С комбинациями добавления / удаления конечных косых черт как в URL-адресе местоположения, так и в URL-адресе proxy_pass, но безрезультатно.

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

Что мне не хватает?


person smartexpert    schedule 15.08.2019    source источник


Ответы (1)


В итоге я продолжил экспериментировать и, наконец, обнаружил, что работает:

        location ~/kb(.*)$ {
         proxy_pass_header Authorization;
            proxy_pass http://<ip>:<port>$1$is_args$args;
            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_http_version 1.1;
            proxy_set_header Connection "";
            proxy_buffering off;
            client_max_body_size 0;
            proxy_read_timeout 36000s;
            proxy_redirect off;
        } 

В частности, мне пришлось использовать $is_args$args для пересылки условий запроса.

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

Кредиты: https://www.techandme.se/set-up-nginx-reverse-proxy/

person smartexpert    schedule 16.08.2019