我尽力研究这个并找到了一些我将概述的解决方案,但遗憾的是它们都没有用。我们有一个服务于多个服务器的公共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和反向代理的新手,任何人都可以帮我理解我做错了什么吗?如果我在网上错过了一篇文章,请随时指出我的方向。我很感激帮助。