nginx 反向代理问题-iks

描述:
目前有两台机器,在此分别命名为 A 和 B,A 的 IP 地址为 172.17.114.2(nginx 1.20.0),B 的 IP 地址为 172.17.115.2(nginx 1.19.8)),均使用宝塔
有两个站,C: example.com 和 D: blog.example.com,内容不一样

在 B 分别添加了 example.com 和 blog.example.com 站点,启用了 SSL,将 C 和 D 解析到 B 后访问正常。
在 A 也分别添加了 example.com 和 blog.example.com 站点,启用了 SSL,两站均设置了反向代理,配置文件如下:

    #PROXY-START/
    location~* \.(gif|png|jpg|css|js|woff|woff2)$
    {
    proxy_pass https://172.17.115.2;
    #B 的 IP 地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    expires 12h;
    }
    location /
    {
    proxy_pass https://172.17.115.2;
    #B 的 IP 地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;

    add_header X-Cache $upstream_cache_status;

    #Set Nginx Cache

    add_header Cache-Control no-cache;
    }

    #PROXY-END/

将 D: blog.example.com 的解析切换到 A: 172.17.114.2 之后,访问 https://blog.example.com 时显示的却是 example.com(C 站)的内容,而访问 https://blog.example.com/xxx 显示的则是正常的 https://blog.example.com/xxx 的内容。

请问这是怎么回事?

热议

2楼 iks 昨天23:02

目前已定位到 A 服务器的 nginx 的问题,正在尝试重装ngx

3楼 6700 昨天23:06

这描述的…看半天都没看明白

4楼 6700 昨天23:07

试试将代码最简化分别测试,慢慢排查

5楼 表弟 昨天23:10

hosts文件里没添加域名跟ip吧?

6楼 gr58046576 昨天23:11

没看懂,只知道一个站你是想反代多少个域名?

7楼 iks 昨天23:26

hosts文件里没添加域名跟ip吧?

不用解析,这种反代是直接向目标IP发送host,然后SNI就炸了(?)

8楼 yjlml 昨天23:39

我比较好奇
你都说了

C: example.com 和 D: blog.example.com,内容不一样

你怎么知道

访问 https://blog.example.com 时显示的却是 example.com(C 站)的内容,而访问 https://blog.example.com/xxx 显示的则是正常的 https://blog.example.com/xxx 的内容。

访问https://blog.example.com 时显示的却是 example.com(C 站)的内容呢?

9楼 iks 昨天23:42

我比较好奇
你都说了
你怎么知道

我就直说了吧
你试试访问 https://blog.iks.moe, https://blog.iks.moe/index.php 和 https://signaliks.com 看看有什么问题

10楼 yjlml 昨天23:46

我就直说了吧
你试试访问 https://blog.iks.moe, https://blog.iks.moe/index.php 和 https://signaliks. …

https://blog.iks.moe和https://blog.iks.moe/index.php 是同一个站
https://signaliks.com是另一个站 但是IP都一样 都是240.204的

12楼 yjlml 昨天23:55

是的,但是
https://blog.iks.moe 和 https://signaliks.com 内容是一样的,而 https://blog.iks.moe/ind …

但是我也没看到你https://signaliks.com/index.php 有内容啊
你是word里面设置的问题吧

我怎么看都是你WP的主题的问题你换一个主题 没有单页做首页的试试

13楼 iks 昨天23:57

但是我也没看到你https://signaliks.com/index.php 有内容啊
你是word里面设置的问题吧

确实啊,所以说反代出现了问题,,,

14楼 iks 昨天23:59

但是我也没看到你https://signaliks.com/index.php 有内容啊
你是word里面设置的问题吧

理论上,https://blog.iks.moe 的内容和 https://blog.iks.moe/index.php 的内容是一致的,https://signaliks.com 与前两者不一致

实际上,https://blog.iks.moe 的内容和 https://signaliks.com 的内容一致,而 https://blog.iks.moe/index.php 和前两者不一样

注,blog.iks.moe 和 signaliks.com 的源站是同一个

15楼 kennyS 16小时前

很明显是你没理解nginx的匹配规则,如果你想使用B作为后端一个网站至少添加两个域名记录,比如cdn.domain.comwww.domain.com , cdn.domain.com作为A服务器反代回源。

或者,在后端B多站点情况下,你一定要使用ip回源:
1,简单就是使用不同的端口。
2,你可以在B建立一个ip的站点,并且设置为de**t_server,然后自己编写lua等再重新匹配。

可以去了解下nginx的匹配规则 http –> server –> location …

16楼 6700 9小时前

很明显是你没理解nginx的匹配规则,如果你想使用B作为后端一个网站至少添加两个域名记录,比如cdn.domain.c …

nginx使用ip回源木有问题,是根据header的host去匹配站点的,只是ssl请求没有sni,不然你让upstream模块情何以堪

17楼 6700 9小时前

是的,但是
https://blog.iks.moe 和 https://signaliks.com 内容是一样的,而 https://blog.iks.moe/ind …

看起来问题已经解决了,所以是哪里出了问题啊?缓存吗

18楼 iks 17分钟前

看起来问题已经解决了,所以是哪里出了问题啊?缓存吗

恢复了,目测是缓存的问题
采取的方案是 DD 系统然后使用 LNMP.org 的一键包编译的 nginx,后手动配置反向代理

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

发表评论