HTTPS обратный прокси с перезаписью URL - PullRequest
1 голос
/ 05 апреля 2019

Я хочу установить 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, но обещание оснастки облегчить обслуживаниеи конфигурация, написанная людьми, которые знают это лучше меня, очаровывает.

1 Ответ

0 голосов
/ 07 мая 2019

Это было решено, позволив обратному прокси-серверу разорвать соединение SSL и переслать незашифрованный на сервер 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, что явно не работает.

...