谁能解决 nginx 规则 反向解析目录到 B 服务器 正常访问 图片 JS CSS 资源的问题,有红包

2018-03-18 00:32:33 +08:00
 mickey001

问题描述:

域名:www.ab12.com 域名主服务器:nginx
域名主服务器 IP:192.168.1.10

需要反向解析到的目录服务器

aaa 目录 对应 服务器 IP 116.100.111.1 bbb 目录 对应 服务器 IP 116.110.111.2 ccc 目录 对应 服务器 IP 116.110.111.3

需求:

主服务器域名 www.ab12.com 需要分别 反向解析 3 个目录名到 目录服务器对应的 3 个 IP,如上;

实现流程:

1、在 www.ab12.com 站的 conf 伪静态规则里增加如下规则实现反向解析到目录服务器 IP 及定义目录名

location /aaa { proxy_pass http://116.100.111.1/; }

location /bbb { proxy_pass http://116.100.111.2/; }

location /ccc { proxy_pass http://116.100.111.3/; }

以上代码可以正常实现 目录反向解析到 目录名所在的服务器 IP ;

可以通过 www.ab12.com/aaa/ www.ab12.com/bbb/ www.ab12.com/ccc/ 正常打开 目录服务器的网站;

原理: 访问 URL www.ab12.com/aaa/ 时,主服务器 从 116.100.111.1 这台服务器的目录里抓取提取网站内容资源,缓存到 www.ab12.com 主站服务器里,然后解析显示网站;

2、然后单独到 域名的 conf 规则里 写上如下代码,定义其中一个目录的静态资源路径解析:

location ~ ^/(?!(aaa)).*.(js|css)?$ { expires 1h; access_log off; }

location ~ ^/(?!(aaa)).*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 1h; access_log off; }

配置好如上规则后, 然后浏览器输入 www.ab12.com/aaa/img/01.jpg 可以打开正常的图片;

依葫芦画瓢:

配置 bbb 目录的 静态资源路径:

location ~ ^/(?!(bbb)).*.(js|css)?$ { expires 1h; access_log off; }

location ~ ^/(?!(bbb)).*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 1h; access_log off; }

现在 问题发生了:

www.ab12.com/aaa/img/01.jpg www.ab12.com/bbb/img/02.jpg

全部都无法正常加载,返回 404 ;也就是访问静态资源丢失;

分析问题:

问题应该处在 配置静态资源规则写法有问题,以上代码,只能定义一个目录的静态资源路径,增加一个就全部完蛋,所以,应该是有 正则匹配 优先级的问题。

所以,我的规则写的肯定有问题,找了好几个 技术,都没能帮我解决,兄弟们只是从 linux 系统找问题,其实系统本身根本没问题;

本身 反向解析目录的原理 就是 A 服务器,从 B 服务器 抓取资源,返回到 A 服务器 通过 proxy_pass 缓存 B 服务器上抓取到的资源;

所以静态资源,肯定要为每一个目录分别指定 静态资源路径才能解决;

但是我虽然知道 问题在哪儿,但是我不会写 这种规则解决;

最后,求助 V2EX 的 大牛们,帮忙解决下这个问题。。。

能解决的,红包送上;

拜托各位了。。帮帮忙,这个问题困扰我很久了。。找了不下 4 个人了,都没能解决

有环境的,可以自己测试下;

用你自己的域名,前提是您的服务器环境必须是 Linux centos nginx ;

用你的域名 分别 反向解析 2 个目录

比如 www.aaa.com/aaa/www.aaa.com/bbb/ 分别解析到 2 个 IP 所在的目录服务器;

www.aaa.com/aaa/ 指向 http://xxx.xxx.xxx.111/ www.aaa.com/bbb/ 指向 http://xxx.xxx.xxx.222/

然后在 目录端服务器里,分别上传 静态网页,里面放点 图片或者 CSS, 只要你能实现 输入 www.aaa.com/aaa/img/01.jpg www.aaa.com/bbb/img/02.jpg 能正常显示图片,就说明你的规则配置正确。您可以联系我,我测试后发红包给您;

2944 次点击
所在节点    PHP
5 条回复
mickey001
2018-03-18 00:41:37 +08:00
我的企鹅 号 : 二七四七零七零零九五
alvinbone88
2018-03-18 01:43:33 +08:00
先把正则写对
halfcrazy
2018-03-18 02:12:46 +08:00
halfcrazy
2018-03-18 02:14:19 +08:00
@halfcrazy
```shell
mkdir static_a static_b static_c
echo a > static_a/a.txt
echo b > static_b/b.txt
echo c > static_c/c.txt

curl http://127.0.0.1:80/aaa/a.txt
curl http://127.0.0.1:80/bbb/b.txt
curl http://127.0.0.1:80/ccc/c.txt
```
GreyChou
2018-03-23 10:10:40 +08:00
关注,问题解决了吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/439020

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX