Apache反向代理指定Location块内校验特定请求头取值的实现方法
可以实现,仅需在当前Location块内增加重写规则即可实现需求,不会影响其他站点或Location的配置。
前置要求
- 确保你的Apache服务已经启用
mod_rewrite模块,你可以通过apache2ctl -M(Debian/Ubuntu系统)或httpd -M(CentOS/RHEL系统)命令检查模块是否已加载。
完整可用配置
<Location "/api/execute"> # 开启当前Location域下的重写引擎 RewriteEngine On # 校验secret请求头值,未携带或值不匹配时触发规则 RewriteCond %{HTTP:secret} !^3J185AydV4bq27wG6JLEZYhQa9MZ0W$ # 不符合要求的请求直接返回403禁止访问 RewriteRule ^ - [R=403,L] ProxyPass http://192.168.10.1:99/api/execute ProxyPassReverse http://192.168.10.1:99/api/execute </Location>
规则说明
- 该规则仅对
/api/execute路径生效,其他路径不受影响 - 规则会同时覆盖两种拦截场景:请求未携带
secret头、secret头取值与指定字符串不匹配 - Apache会自动对请求头名做标准化处理,无需担心请求头大小写问题(比如客户端传
Secret、SECRET都会被正确识别校验) - 校验通过的请求会正常转发至后端服务,不会产生额外性能损耗
内容的提问来源于stack exchange,提问作者sql_usr001
相关产品推荐
相关产品推荐

