在单台Nginx服务器部署多站点(虚拟主机)时遇默认页面问题
Nginx多站点部署后访问IP显示默认页面的解决方法
问题核心
访问服务器IP时,Nginx会优先匹配默认Server块(带有default_server标记或未指定server_name的块),而非你配置的example1.com/example2.com站点块,因此显示默认页面。
具体解决步骤
定位默认Server块
打开Nginx配置文件(主配置/etc/nginx/nginx.conf或默认站点配置/etc/nginx/sites-available/default),找到类似以下的默认块:server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.html index.htm; server_name _; ... }其中
default_server标记决定了它是无匹配域名时的默认处理块。选择适合的解决方式
方式一:让默认块指向自定义站点
修改默认块的root路径为你的目标站点目录,比如:root /var/www/html/example1.com;或直接设置跳转:
return 301 https://example1.com;方式二:修改默认块返回自定义提示
若希望访问IP时返回404或自定义页面,可修改默认块:server { listen 80 default_server; listen [::]:80 default_server; return 404; # 或指定自定义提示页面目录 # root /var/www/html/empty; # index 404.html; }方式三:将自定义站点设为默认
在你指定的自定义Server块中添加default_server标记,让它成为无匹配时的默认处理:server { listen 80 default_server; listen [::]:80 default_server; server_name example1.com www.example1.com; root /var/www/html/example1.com; index index.html; }
验证并重启Nginx
- 执行配置检查:
$ sudo nginx -t - 配置无误后重启服务:
$ sudo systemctl restart nginx
- 执行配置检查:
补充注意
- 确保自定义站点目录的权限正确,给Nginx进程读取权限:
$ sudo chown -R www-data:www-data /var/www/html/example1.com - 直接访问
example1.com或example2.com域名时,应正常显示自定义内容,仅访问IP时触发默认规则
内容的提问来源于stack exchange,提问作者Elsie Irakoze Karangwa
相关产品推荐
相关产品推荐

