You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何修复静态站点的Nginx配置?解决Docker化Nginx返回406错误问题

解决Nginx静态站点返回406错误的问题

首先,咱们先揪出你的配置里最核心的问题——语法错误!你把indexroot指令挤在了同一行,而且index指令没加闭合分号,导致Nginx把root /var/www/html/xlanding当成了index指令的参数,直接打乱了路径解析的逻辑,这肯定会出问题。

修正后的基础配置

先把配置的语法和指令顺序调整正确:

location / {
    root /var/www/html/xlanding;
    index index.html;
    try_files $uri $uri/ =404;
}

关键调整点:

  • 每个指令单独一行,用分号闭合,这是Nginx配置的基本语法要求
  • root指令放在index之前(虽然顺序不影响功能,但这是更规范的写法)
  • try_files的最后一个参数改回=404,406是「请求的内容类型服务器无法提供」,和静态文件找不到的场景不匹配,你之前改它只是为了确认配置匹配,现在可以恢复正常错误码

为什么之前会返回406?

因为原配置的语法错误,Nginx解析时把root路径当成了索引文件名的一部分,导致它找不到正确的索引文件,最终触发try_files的最后规则返回了你指定的406错误。

额外验证步骤(如果修正后仍有问题)

  • 检查文件权限:进入Docker容器,确认Nginx进程用户(一般是www-data)能读取目标文件:
    ls -l /var/www/html/xlanding/index.html
    chown www-data:www-data /var/www/html/xlanding/index.html
    chmod 644 /var/www/html/xlanding/index.html
    
  • 重新加载配置:修改配置后一定要让Nginx生效:
    nginx -s reload
    
  • 查看错误日志:如果还是有问题,去Nginx错误日志里找细节(路径一般是/var/log/nginx/error.log):
    tail -f /var/log/nginx/error.log
    
    访问网站后,日志会告诉你具体的路径解析或权限问题。

等你把静态站点的配置搞定后,后续加/blog路径的WordPress也很简单,只要在现有配置后新增一个location /blog块,指向WordPress的根目录并配置PHP解析规则就行。

内容的提问来源于stack exchange,提问作者O. Altun

火山引擎 最新活动