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

如何配置Nginx使Django Admin仅在指定端口可访问?

问题解决:限制/admin仅能通过指定端口访问

你的问题出在443端口的Nginx配置上——location / 会匹配所有请求路径(包括/admin开头的请求),所以即便你在445端口单独配置了/admin的代理,443端口的location /依然会处理/admin请求,导致它能被访问。

修复后的Nginx配置

只需在443端口的server块中,新增一条专门拦截/admin路径的规则,直接拒绝这类请求即可:

server {
  listen 443 ssl;
  server_name abc.example.com;
  client_max_body_size 500M;

  ssl_certificate /etc/nginx/my.crt;
  ssl_certificate_key /etc/nginx/server.key;

  # 拦截443端口的/admin请求,返回403禁止访问
  location /admin {
    return 403;
  }

  location / {
    proxy_set_header   X-Forwarded-For $remote_addr;
    proxy_set_header   Host $http_host;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection "upgrade";
    proxy_pass http://localhost:3001;
  }
} 
server{
  listen 445 ssl;
  server_name abc.example.com;
  client_max_body_size 500M;

  ssl_certificate /etc/nginx/my.crt;
  ssl_certificate_key /etc/nginx/server.key;

  location /admin {
    proxy_set_header   X-Forwarded-For $remote_addr;
    proxy_set_header   Host $http_host;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection "upgrade";
    proxy_pass http://localhost:3001;
  }

  # 可选:如果445端口只允许访问/admin,其他路径返回403
  location / {
    return 403;
  }
}

server {
  listen 80;
  server_name abc.example.com;
  return 301 https://$host$request_uri;
}

关键说明

  • Nginx会优先匹配更具体的location规则,所以443端口中location /admin的优先级高于location /,/admin请求会被直接拦截返回403。
  • 可选:如果希望445端口仅开放/admin路径,其他请求一律拒绝,可以添加location /返回403的规则,进一步收紧访问权限。

修改配置后,执行nginx -t检查语法正确性,再执行nginx -s reload使配置生效即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:33