Nginx Server Block配置异常求助:域名访问不符合预期
Hey,我来帮你排查这两个Nginx配置问题,咱们一步步来解决:
问题1:访问zrehan.com和infinity.com都打开infinity.com的首页
这是因为你只给infinity系列域名配置了Server Block,没有为zrehan.com单独定义对应的站点规则。Nginx的规则是:当收到请求的域名没有匹配到任何Server Block的server_name时,会自动用第一个加载的Server Block(或者默认配置)来处理请求。所以zrehan.com的请求就被分流到了infinity的站点里。
解决办法:
- 如果你想让zrehan.com指向自己的独立站点,就在
/etc/nginx/sites-available/default里新增一个Server Block:
server { listen 80; server_name zrehan.com; # 替换成zrehan站点的根目录 root /path/to/your/zrehan/website; index index.html index.htm; }
- 要是暂时没有zrehan的站点内容,要么从hosts文件里去掉
zrehan.com的映射,要么配置一个默认Server Block来处理未匹配的域名请求。
问题2:访问infinity.com时出现错误
我看了你的配置和操作,发现几个明显的问题:
- 索引指令写错了:你写的
index.html index.htm缺少了关键的index关键字,正确的写法应该是index index.html index.htm;,不然Nginx找不到默认首页。 - 符号链接路径拼写错误:你执行的命令里把
sites-available写成了sites-avaiable(少了一个l)!这会导致Nginx找不到你的配置文件,因为这个符号链接指向的是不存在的路径。 - 目录权限可能不足:Nginx进程通常以
www-data用户运行,需要有权限访问你的站点根目录/home/zrehan/projects/infinityrollcordova/www/homeScreen。
解决步骤:
- 先修复Server Block里的索引配置:
server{ listen 80; server_name infinity infinity.com www.infinity.com; location / { root /home/zrehan/projects/infinityrollcordova/www/homeScreen; index index.html index.htm; # 加上index关键字 } }
- 修复错误的符号链接:
# 删除错误的链接 rm /etc/nginx/sites-enabled/default # 创建正确的符号链接 ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
- 确保Nginx能访问站点目录:
# 给目录添加读取权限 chmod -R 755 /home/zrehan/projects/infinityrollcordova/www/homeScreen # 可选:把目录所有者改成www-data(如果权限还是有问题的话) chown -R www-data:www-data /home/zrehan/projects/infinityrollcordova/www/homeScreen
- 验证配置并重启Nginx:
# 检查配置语法是否正确 nginx -t # 重启服务生效 systemctl restart nginx
做完这些,再访问两个域名应该就能正常工作了!
内容的提问来源于stack exchange,提问作者Rehan
相关产品推荐
相关产品推荐

