概述
项目场景:
公司机房搬迁,新环境和外界隔离,系统需要重新搭建,涉及到的服务器资源不足,考虑到国外用户暂时相对教少,一台服务器部署两个项目具有可行性。公司办公网默认解析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;
}
}
完美解决
最后
以上就是踏实方盒为你收集整理的nginx配置server_name后不生效项目场景:问题描述:原因分析:解决方案:的全部内容,希望文章能够帮你解决nginx配置server_name后不生效项目场景:问题描述:原因分析:解决方案:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复