Обратный прокси HTTPS с перезаписью URL

Я хочу установить Nextcloud на свой домашний сервер. Привязка Nextcloud всегда помещает экземпляр Nextcloud в /, скажем, https://myserver.ddns.com. Но я также хочу обслуживать другие веб-страницы со своего сервера по адресу https://myserver.ddns.com/otherstuff/, поэтому я хочу переместить Nextcloud на https://myserver.ddns.com/nextcloud/.

Кажется, это можно сделать для HTTP-сервера, используя обратный прокси-сервер с перезаписью URL, т.е. я запускаю оснастку Nextcloud на порту 81, и обратный прокси-сервер прозрачно маршрутизирует https://myserver.ddns.com/nextcloud/ -> https://myserver.ddns.com:81/.

Но я не хочу открывать незашифрованный экземпляр Nextcloud в Интернете. Можно ли переписать этот URL-адрес для экземпляра HTTPS? Это потребует от прокси-сервера чтения HTTPS-запроса, но прозрачный обратный прокси-сервер не сможет расшифровать сообщение?

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


person Åsmund    schedule 05.04.2019    source источник


Ответы (1)


Это было решено путем разрешения обратному прокси-серверу разрывать SSL-соединение и пересылать в незашифрованном виде на сервер Nextcloud. Затем прокси может переписать URL. Nextcloud также следует сообщить, что он находится за обратным прокси-сервером для перезаписи URL.

Для привязки nextcloud вы можете использовать следующие команды (из https://github.com/nextcloud/nextcloud-snap/wiki/Putting-the-snap-behind-a-reverse-proxy#nginx-optional-custom-path-location-for-reverse-proxy):

$ nextcloud.occ config:system:set overwritehost --value="myserver.ddns.com"
$ nextcloud.occ config:system:set overwriteprotocol --value="https"
$ nextcloud.occ config:system:set overwritewebroot --value="/nextcloud"
$ nextcloud.occ config:system:set overwrite.cli.url --value="https://myserver.ddns.com/nextcloud"

или вы можете редактировать эти значения прямо в Nextcloud config.php.

Ссылка выше не объясняет настройку Apache, но работает следующее:

ProxyPass       "/nextcloud" "http://127.0.0.1:8000"
ProxyPassReverse "/nextcloud" "http://127.0.0.1:8000"
ProxyPass "/" "http://127.0.0.1:8001/"
ProxyPassReverse  "/" "http://127.0.0.1:8001/"

где порт 8001 - это веб-сервер для статических / других файлов. По какой-то причине, которую я не понимаю, важны завершающие косые черты: если я добавлю конечную косую черту:

ProxyPass       "/nextcloud" "http://127.0.0.1:8000/"

то меня перенаправляют, но Nextcloud не работает должным образом, и если я удалю его из статического перенаправления:

ProxyPass "/" "http://127.0.0.1:8001"

затем myserver.ddns.com/foo перенаправляется внутренне на http://127.0.0.1:8001foo, что явно не работает.

person Åsmund    schedule 07.05.2019