案例:nginx同一端口多service_name访问匹配不正确,资源定位不一致问题

3 篇文章 1 订阅

温故而知新,可以为师矣!

1、问题出现场景

    要求访问http://www.xxx.comhttp协议二级域名、访问https://www.xxx.comhttps协议的二级域名、访问http://xxx.com和访问https://xxx.com的顶级域名都能访问到同一资源且只能由域名来进行资源访问,但是实际访问过程中,使用顶级域名访问的时候并没有被代理到需要的资源上。

    因为本地测试没有SSL证书的原因,不对http和https的访问做出测试只针对二级域名和顶级域名访问资源做测试

2、问题复现

正常访问情况是:

访问http://www.dongzi.comhttp://dongzi.com能访问到下图所示资源

在这里插入图片描述
访问http://www.dongzi2.comhttp://dongzi2.com能访问到下图所示资源

在这里插入图片描述
    可实际情况不然!因为域名www.dongzi.com所定位的资源在服务中不能被修改,而想要定位其他资源只能另外解析域名来进行资源定位,故出现需要访问域名http://www.dongzi2.comhttp://dongzi2.com定位到如下资源才算是成功。

在这里插入图片描述
在这里插入图片描述

实际出现结果是:

访问http://www.dongzi2.com资源定位正常,访问http://dongzi2.com的时候出现资源定位错误,如下图所示:

在这里插入图片描述
资源被定位到了其他页面!!! 这是为什么呢?

3、出现问题时主机(windows)域名解析、Nginx代理相关配置

hosts配置

127.0.0.1       www.dongzi.com dongzi.com
127.0.0.1       www.dongzi2.com dongzi2.com

nginx配置

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    
	server {
		listen       80;
        server_name  www.dongzi.com;
		
		location / {
			alias D:/html/t1/;
			index index.html;
		}
	}
	server {
		listen       80;
        server_name  www.dongzi2.com;
		
		location / {
			alias D:/html/t2/;
			index index.html;
		}	
	}
}

4、问题解决,修改Nginx代理配置

在代理主机server_name处加一个主机名配置:

server_name 	www.donngzi2.com dongzi2.com;

重新加载Nginx配置文件后,问题解决!此时访问dongzi2.com域名能正常访问到T2页面

在这里插入图片描述

5、问题出现原因

  • 在nginx的server_name找不到服务名的时候,会首先访问默认服务名default_server,如果未配置默认服务名此时会访问到第一个配置的服务名的资源。上面配置可以看出,第一个服务名访问的资源正是T1资源,这也就解释了为什么访问顶级域名的时候得到T1资源,因为dongzi2.comserver_name未被配置,也没有默认的default_server,所以访问到了第一个server_name对应的资源。

附:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白说(๑• . •๑)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值