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

NGINX配置WordPress wp-admin白名单失效,添加规则后出现404

NGINX /wp-admin IP白名单配置导致404的解决方法

你的问题出在/wp-admin这个location块只配置了访问控制规则,没有将请求转发到WordPress后端服务。

当你只保留deny all时,NGINX直接触发访问控制的403响应,不会去处理请求的后续转发;但添加allow规则后,被允许的IP会进入这个location,此时NGINX尝试在本地服务器上查找/wp-admin对应的静态资源,而你的WordPress是部署在后端http://wordpress服务上的,本地没有这些资源,所以返回404错误。

修正方法很简单,给/wp-admin的location块加上和根location一样的代理配置,让允许的IP请求能转发到WordPress后端:

location / {
      proxy_pass http://wordpress;
      
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host $host;
    }

location /wp-admin {
      allow 123.0.0.0/4;
      deny all; 

      # 新增代理配置,将请求转发到WordPress后端
      proxy_pass http://wordpress;
      
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Host $host;
    }

如果不想重复写这些代理header,可以把公共配置抽成单独的文件,比如创建proxy-params.conf:

proxy_pass http://wordpress;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;

然后在两个location里引用:

location / {
      include proxy-params.conf;
    }

location /wp-admin {
      allow 123.0.0.0/4;
      deny all; 
      include proxy-params.conf;
    }

这样修改后,被允许的IP访问/wp-admin时,请求会正常转发到WordPress后端,不会再出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:52:43