Nginx虚拟主机配置不生效,总是访问默认网址目录,常见解决方法(default_server)

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所有,转载请注明出处。)