我想在我的家庭服务器上安装Nextcloud。Nextcloud snap将始终将Nextcloud实例放在/,比如https://myserver.ddns.com。但我也想从我在https://myserver.ddns.com/otherstuff/的服务器上提供其他网页,所以我想把Nextcloud迁移到https://myserver.ddns.com/nextcloud/上。
对于使用反向代理并重写url的HTTP服务器,似乎可以做到这一点,例如,我在端口81运行Nextcloud snap,反向代理透明地路由https://myserver.ddns.com/nextcloud/ -> https://myserver.ddns.com:81/。
但我不想将未加密的Nextcloud实例暴露在互联网上。是否可以对HTTPS实例执行此URL重写?它将要求代理读取HTTPS请求,但透明的反向代理不应该能够解密通信?
当然,另一种选择是手动安装Nextcloud,但snap承诺由比我更了解这些东西的人编写更容易的维护和配置,这是很诱人的。
发布于 2019-05-07 14:53:25
这是通过让反向代理终止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是静态/其他文件的for服务器。出于某些我不理解的原因,尾部斜杠很重要:如果我添加尾部斜杠:
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
,这显然是不起作用的。
https://stackoverflow.com/questions/55531764
复制相似问题