#url-rewriting #reverse-proxy #nextcloud
#перезапись url #обратный прокси #nextcloud
Вопрос:
Я хочу установить Nextcloud на свой домашний сервер. Привязка Nextcloud всегда будет помещать экземпляр Nextcloud в /, скажем https://myserver.ddns.com . Но я также хочу обслуживать другие веб-страницы со своего сервера поhttps://myserver.ddns.com/otherstuff /, поэтому я хотел бы переместить Nextcloud на https://myserver.ddns.com/nextcloud /.
Кажется, это можно сделать для HTTP-сервера, используя обратный прокси с перезаписью URL, т. Е. Я запускаю Nextcloud snap на порту 81, и обратный прокси прозрачно маршрутизируетhttps://myserver.ddns.com/nextcloud / -> https://myserver.ddns.com:81 /.
Но я не хочу предоставлять незашифрованный экземпляр Nextcloud Интернету. Возможно ли выполнить эту перезапись URL-адреса для экземпляра HTTPS? Для чтения запроса HTTPS потребуется прокси-сервер, но прозрачный обратный прокси-сервер не должен быть способен расшифровать сообщение?
Альтернативой, конечно, является ручная установка Nextcloud, но обещание snap упростить обслуживание и настройку, написанное людьми, которые разбираются в этом лучше меня, заманчиво.
Ответ №1:
Это было решено путем разрешения обратному прокси прерывать SSL-соединение и пересылать незашифрованное на сервер Nextcloud. Затем прокси может переписать URL. Nextcloud также должен быть проинформирован о том, что он стоит за обратным прокси с перезаписью url.
Для nextcloud snap вы можете использовать следующие команды (из 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
, что явно не работает.