0

我尽我最大的努力对此进行了研究,并找到了一些我将概述的解决方案,但遗憾的是它们都不起作用。我们有一个服务于多台服务器的公共 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 和反向代理的新手,谁能帮我理解我做错了什么?如果我在网上错过了一篇文章,请随时指出我的方向。我很感激帮助。

4

0 回答 0