nginx配置server_name后不生效


项目场景:

公司机房搬迁,新环境和外界隔离,系统需要重新搭建,涉及到的服务器资源不足,考虑到国外用户暂时相对教少,一台服务器部署两个项目具有可行性。公司办公网默认解析8080端口,所以nginx需要配置不同server_name,相同端口。


问题描述:

nginx配置中配置了

http{

xxx

server{

xxx;

port 8080;

server_name www.name1.com;

}

server{

xxx;

port 8080;

server_name www.name2.com;

}

}

访问  www.name1.com 或  www.name2.com最终都跳转到了 www.name1.com的前端资源

@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget(); } 

原因分析:

基于nginx对server_name的检测规则,当请求来自 www.name1.com时确实可以被正确解析到第一个server,来自www.name2.com也可以被正确解析到第二个server。但是除此之外的其他请求如果同时不匹配这两者,也会默认访问到配置的第一个server,所以就出现了我出现的问题。


解决方案:

已经定位到了问题出现在非法HOST,基于ngin默认匹配第一个的规则,可以在nginx中第一个配置一个专门针对非法host的server配置。

http{

xxx

server {
   listen 80;
   server_name _;
   
   return 404;
}

server{

xxx;

port 8080;

server_name www.name1.com;

}

server{

xxx;

port 8080;

server_name www.name2.com;

}

}

完美解决

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值