问题描述:
域名: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 能正常显示图片,就说明你的规则配置正确。您可以联系我,我测试后发红包给您;
1
mickey001 OP 我的企鹅 号 : 二七四七零七零零九五
|
2
alvinbone88 2018-03-18 01:43:33 +08:00
|
3
halfcrazy 2018-03-18 02:12:46 +08:00
|
4
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 ``` |
5
GreyChou 2018-03-23 10:10:40 +08:00 via iPhone
关注,问题解决了吗?
|