nginx配置server的时候server_name不起作用?
本文介绍了nginx配置server的时候server_name不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
nginx配置server的时候 server_name为什么不起作用
server {
listen 8000;
server_name kaixuan.test.com;
root /data1/htdocs/kaixuan.test.com/;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
location / {
index index.html;
}
}
server {
listen 80;
server_name kaixuan.hehe.com;
root /data1/htdocs/kaixuan.hehe.com/;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
location / {
index index.html;
}
}
上面是我的代码,我配置了两个server,server_name 和端口是不一样的
但是我访问 kaixuan.hehe.com:8000 竟然也进入了kaixuan.test.com。【注意端口】
同样,我访问 kaixuan.test.com 也能进入kaixuan.hehe.com,这正常吗?
如果这样正常的话,那么我们在线上怎么解决?加一个默认的让他默认进去吗?
解决方案
对的,加一条默认的阻挡。
当所有server的规则都不匹配时,nginx会采用第一条server配置,所以一般第一条server会使用阻止页面。
server {
listen 80;
server_name _;
return 404;
}
这篇关于nginx配置server的时候server_name不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文