如何重写Nginx反向代理中的位置以完美加载owncloud页面?

时间:2019-05-07 14:01:50

标签: nginx nginx-reverse-proxy owncloud

我对使用反向代理完全没有经验,所以我的问题真的很la脚,对此感到抱歉。

我正在尝试通过nginx反向代理访问我自己的云服务器,但无法完美加载。

我有一台使用多个位置的NGINX反向代理服务器。我想使用apache对位于另一台机器上的我自己的cloud服务器进行新的公共访问。 我想使用_https:// my_public_url / owncloud_到达我自己的cloud服务器,所以我做了如下的位置阻止:

我正在使用的东西

location / {
    proxy_pass http://my_owncloudserver_url/;

一切都很好。

但是在这种情况下:

location /owncloud/ {
    proxy_pass http://my_owncloudserver_url/;

我得到的 index.php / login 页面没有任何格式,如/ apps,/ core等。仍然需要从“ https://my_public_url/apps/ ...”,“ { {3}} ...”等,而不是文件所在的“ https://my_public_url/core/ ...”,因为这些请求与 / owncloud / 位置不匹配,并且没有代理。

我想我应该使用 rewrite 来更改这些请求的网址,将“ / owncloud /”部分放入网址中。

如果我使用单独的位置来匹配“ / core / ...”请求,例如:

location /core/ {
     rewrite  ^/core/(.*)$ /owncloud/core/$1 permanent;
}

然后看起来还可以,但我不会做出很多不同的位置来匹配所有各种请求。

我该如何解决? 尽管想法一定很简单,但我还是没有想法。

谢谢,

2 个答案:

答案 0 :(得分:0)

我不确定Owncloud。但是在Nextcloud中,您必须在config.php https://docs.nextcloud.com/server/16/admin_manual/configuration_server/config_sample_php_parameters.html#proxy-configurations中配置一些代理参数 请考虑使用Nextcloud,因为它比Owncloud更快,如果是完全开源的,则具有更多功能并且由社区积极维护。

答案 1 :(得分:0)

运行容器时将OWNCLOUD_SUB_URL更新为“/owncloud”,如果不使用容器运行,则查找替代配置

在 nginx 配置上

location /owncloud {
    proxy_pass http://my_owncloudserver_url/owncloud;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    proxy_buffering off;
}