Nginx虚拟主机配置不生效,总是访问默认网址目录,常见解决方法(default_server)
2022-05-18
Centos8环境中,Nginx添加一个虚拟主机,以customwebsite.com为例,用独立的配置文件管理,存放在目录/etc/nginx/conf.d中。
server {
listen 80;
server_name customwebsite.com;
location / {
root /home/www;
index index.html index.htm index.php;
}
# 其他配置
# ...
}
重启Nginx后,无报错,访问http://customwebsite.com,总是指向Nginx默认的网站页面。
首先要做IP映射,打开hosts文件(位置:/etc/hosts),在最后添加一行:
127.0.0.1 customwebsite.com
然后分析配置文件,Nginx默认主配置文件在:/etc/nginx/nginx.conf。其中有一句 include conf.d/*;,意思就是引入conf.d目录下所有文件,如果没有,则自行补充。
一些Nginx版本配置文件中,会有 default_server 指令,它所在的server,用于处理一些没有匹配到 server_name 的请求。
Nginx从上至下依次读取配置,刚才的include语句可能在default_server 上面,也可能在其下面,无关紧要。
...
server {
listen 80 default_server;
return 403; # 403 forbidden
}
...
看见许多博文说是需要删除default_server就能解决网站访问问题,其实一般问题不在这里,这个算是缺省选项的server,不影响大局。
根本问题通常还是在添加的配置文件,涉及访问权限的概率非常大,解决方法是检查配置网站的root目录访问权限以及SELinux相关配置。推荐阅读:Centos 8 环境下Nginx报错原因之一。
参考资料
https://www.jb51.net/article/193055.htm
(版权归cpury.com所有,转载请注明出处。)