当前位置:网站首页 >  百科

Nginx配合令牌隐藏后台地址实操指南 全步骤可直接复制落地

时间:2026年06月11日 19:56:18 来源:易频IT社区

前置环境准备

首先确保服务器已安装Nginx 1.11.0及以上版本,如需使用动态令牌方案需安装OpenResty,对应安装命令如下:

  • CentOS系统安装Nginx: ``` yum install -y nginx 验证版本 nginx -v ```
  • Ubuntu系统安装Nginx: ``` apt update && apt install -y nginx 验证版本 nginx -v ```

若输出版本号低于1.11.0,需添加Nginx官方源重新安装即可。

方案一:固定令牌实现(小白首选,5分钟落地)

该方案使用固定字符串作为访问前缀,配置简单无需额外依赖,适合个人站点、小型项目使用。

步骤1:生成专属访问令牌

执行以下命令生成16位随机字符串作为专属访问前缀,不要泄露给无关人员

``` openssl rand -hex 8 ```

示例输出:a7d2f9c4e1b3058d,后续所有配置中该字符串需替换为你自己生成的内容。

步骤2:编写Nginx配置

编辑站点配置文件,路径一般为/etc/nginx/conf.d/你的站点域名.conf,完整可复制配置如下:

``` 将以下map块放在nginx.conf的http块内,若直接写在站点配置文件则放在server块外 map $request_uri $admin_access { default 0; 替换为你自己生成的令牌 ~^/a7d2f9c4e1b3058d(/.)$ 1; } server { listen 80; server_name 你的站点域名; root /usr/share/nginx/html; index index.html index.htm; 禁止直接访问原后台路径,所有常见后台路径都可添加到此处拦截 location ^~ /admin { deny all; return 404; } location ^~ /manage { deny all; return 404; } location ^~ /system { deny all; return 404; } 令牌路径转发规则 location ^~ /a7d2f9c4e1b3058d { 去掉令牌前缀后转发给后台服务 rewrite ^/a7d2f9c4e1b3058d(/.)$ $1 break; 替换为你实际的后台服务地址 proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 其他站点原有配置保持不变 location / { try_files $uri $uri/ =404; } } ```

步骤3:验证配置生效

Nginx配合令牌隐藏后台地址实操指南 全步骤可直接复制落地

执行以下命令验证配置正确性,无误后重载Nginx:

``` nginx -t systemctl reload nginx ```

测试:直接访问https://你的域名/admin会返回404,访问https://你的域名/你的令牌/admin即可正常进入后台。

方案二:动态时间令牌实现(高安全需求首选)

该方案令牌每10分钟自动刷新,即使泄露也不会长期有效,适合企业站点、多人协作的后台使用,需安装OpenResty,安装命令如下:

``` yum install -y yum-utils yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo yum install -y openresty ```

步骤1:配置动态令牌生成与校验规则

编辑OpenResty配置文件,路径为/usr/local/openresty/nginx/conf/nginx.conf,完整配置如下:

``` http { include mime.types; default_type application/octet-stream; lua_shared_dict token_cache 1m; server { listen 80; server_name 你的站点域名; 禁止直接访问原后台路径 location ^~ /admin { deny all; return 404; } 令牌生成接口 location /generate_admin_token { content_by_lua_block { -- 替换为你自己的自定义秘钥,不要泄露 local secret = "my_custom_secret_20240601@$" local time = ngx.time() -- 10分钟为一个时间槽,令牌有效期10-20分钟 local current_time_slot = math.floor(time / 600) local token = ngx.md5(secret .. current_time_slot) ngx.say("当前有效后台路径: /" .. token) } } 动态令牌校验与转发 location ~ ^/([0-9a-f]{32}) { set $token $1; rewrite_by_lua_block { -- 和上面的秘钥保持一致 local secret = "my_custom_secret_20240601@$" local time = ngx.time() local current_slot = math.floor(time / 600) local valid_token1 = ngx.md5(secret .. current_slot) -- 保留上一个时间槽的令牌,避免切换时访问失败 local valid_token2 = ngx.md5(secret .. (current_slot - 1)) if ngx.var.token ~= valid_token1 and ngx.var.token ~= valid_token2 then ngx.exit(404) end } 去掉令牌前缀后转发给后台 rewrite ^/[0-9a-f]{32}(/.)$ $1 break; 替换为你实际的后台服务地址 proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } 其他站点原有配置保持不变 location / { root html; index index.html index.htm; } } } ```

步骤2:添加令牌生成接口认证

为避免无关人员获取有效令牌,给生成接口加基础认证,执行以下命令生成账号密码:

``` yum install -y httpd-tools htpasswd -c /usr/local/openresty/nginx/conf/.htpasswd admin ```

按提示输入密码后,在generate_admin_token的location块中添加以下两行配置:

``` auth_basic "Admin Token Generate"; auth_basic_user_file conf/.htpasswd; ```

步骤3:验证生效

重载OpenResty后,访问https://你的域名/generate_admin_token,输入刚才设置的账号密码即可获取当前10分钟内有效的后台路径,访问该路径即可进入后台,10分钟后路径自动失效。

``` systemctl reload openresty ```

常见问题排查

  • 访问令牌路径返回404:首先执行nginx -t检查配置是否正确,查看/var/log/nginx/error.log日志,确认proxy_pass指向的后台服务是否正常运行,rewrite规则是否匹配路径。
  • 后台静态资源加载失败:检查后台代码是否使用了绝对路径,建议统一设置后台上下文路径,比如SpringBoot项目在application.yml中添加server.servlet.context-path=/admin,PHP项目将后台文件统一放在admin目录下。
  • 动态令牌切换时访问失败:配置中已默认保留上一个时间槽的令牌有效期10分钟,若仍出现问题可调整时间槽长度,将math.floor(time / 600)中的600改为1200,延长有效期至20分钟。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图