NGINX作为反向代理打破了云同步能力

时间:2018-01-01 07:09:03

标签: nginx reverse-proxy nextcloud

我尽力研究这个并找到了一些我将概述的解决方案,但遗憾的是它们都没有用。我们有一个服务于多个服务器的公共IP地址。为了方便起见,我们有几个子域指向此IP,我的示例将涵盖cloud.example.com和noc.example.com。

NGINX安装在基本上我们的DMZ机器上,所有http和https流量都指向这台机器,我们将调用10.0.1.20和我们称之为10.0.1.21的云服务器。所以我设置反向代理看起来像这样

server {
listen          10.0.1.20:443
server_name     cloud.example.com;

access_log  /var/log/nginx/cloud.log  main;

include /etc/nginx/whitelist.conf;
deny all;

root /var/www/localhost/htdocs;
location / {
        proxy_pass        https://10.0.1.21:443;
        proxy_set_header  Host cloud.example.com;
        proxy_set_header  X-Real-IP  $remote_addr;
}}

然后我们将调用10.0.1.22的网络监控软件以相同的方式设置,但使用不同的proxy_set_header和不同的server_name和access_log。这无法正常工作,因为某些奇怪的原因,cloud.example.com工作得相当好,但是noc.example.com会加载而没有任何形式的CSS格式,如果我们尝试点击链接就像noc.example.com/ intrusion_detect失败了。

所以我挖了几天,发现一个过去说我需要改变位置的设置方式,我需要添加一个正则表达式,他们建议复制并粘贴他们的。看着它代码似乎并不是恶意的(4-6个字符),所以我按照他们的建议做了,新的代理看起来像这样:

server {
listen          10.0.1.20:443;
server_name     cloud.example.com;

access_log  /var/log/nginx/cloud.log  main;

include /etc/nginx/whitelist.conf;
deny all;

root /var/www/localhost/htdocs;
location ~ ^/(.*)$ {
        proxy_pass        http://10.0.1.21:443/$1$is_args$args;
        proxy_set_header  Host cloud.example.com;
        proxy_set_header  X-Real-IP  $remote_addr;
}}

所以添加〜^ /(。*)$ / $ 1 $ is_args $ args 似乎修复了样式问题,但每次客户端都是远程或本地试图同步有很多错误。如果我只保留cloud.example.com代理,那么同步很好,但是在443上添加任何其他代理并且突然它再次开始失败。我得到的最大问题是请求太大或服务器响应:错误请求"我认为是HTTP / 400错误。我是NGINX和反向代理的新手,任何人都可以帮我理解我做错了什么吗?如果我在网上错过了一篇文章,请随时指出我的方向。我很感激帮助。

0 个答案:

没有答案