You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx基础认证无法生效问题排查求助

问题原因及解决办法

核心错误

你有两个Nginx server 块同时监听8000端口:

  • 修改后的default默认站点配置
  • 新建的WebDAV专属配置

当访问http://192.168.0.150:8000/webdav时,Nginx会优先使用加载顺序更早的server块(通常是default配置)处理请求,而这个default配置里没有设置认证规则,所以直接返回了目录下的index.html,完全没触发WebDAV配置里的认证逻辑。

解决办法

方法1:把WebDAV配置设为默认server

修改WebDAV配置中的listen指令,添加default_server标记,让Nginx将所有无明确server_name匹配的请求(比如直接用IP访问的请求)都交给这个server处理:

server {
  listen 8000 default_server;
  listen [::]:8000 default_server;

  root /webdav;

  location / {
    auth_basic "Restricted";
    auth_basic_user_file "/etc/nginx/.pwd";
  }
}

修改后执行nginx -s reload重载配置即可。

方法2:调整default配置的监听端口

既然Apache占用了80端口,你可以把default配置的监听端口改成其他未被占用的端口(比如8001),避免和WebDAV配置的8000端口冲突,这样访问8000端口时就只会匹配WebDAV的server块。

调试手段

  • 查看请求日志:打开/var/log/nginx/access.log,日志中会记录每个请求对应的server_name,能直接确认请求被哪个server块处理。
  • 用curl调试:执行curl -v http://192.168.0.150:8000/webdav,观察响应头部是否包含WWW-Authenticate字段(认证所需的标识头部),如果没有,说明请求没走到WebDAV的server块。
  • 查看完整生效配置:执行nginx -T(注意是大写T),会输出Nginx加载的所有完整配置,能清晰看到两个server块的加载顺序、监听规则,以及哪个被设为默认server。

内容的提问来源于stack exchange,提问作者notaverygoodprogrammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:29:53