Apache配置变量用法:服务端IP、客户端IP等取值说明
Apache 2.4 配置表达式常用变量对应说明
Apache 表达式(ap_expr)语法环境下的变量命名和老的mod_rewrite、CGI环境的变量名不完全一致,你要的四个需求对应变量和用法直接列在下面:
- 服务器自身接收请求的IP地址:使用
SERVER_IP变量,没有SERVER_ADDR这个ap_expr原生变量,这个变量会返回当前网卡上实际接收到本次请求的本地绑定IP,多网卡、多IP虚拟主机场景下取值会自动匹配对应监听IP。 - 客户端IP地址:你找到的
REMOTE_ADDR是正确的,如果前端挂了反向代理,需要提前配置mod_remoteip把代理传递的真实客户端IP同步到该变量,否则取值会是反向代理节点的IP。 - 客户端访问的完整URL:不需要找单独的变量,直接拼接表达式即可:
REQUEST_SCHEME . '://' . HTTP_HOST . REQUEST_URI;如果只需要域名后的相对路径(含查询参数),直接取REQUEST_URI就行。 - 判断请求是否来自本机的布尔值:直接写判断逻辑
REMOTE_ADDR == SERVER_IP即可,表达式返回真值时就代表请求是服务器本机发起的,没有单独的预定义布尔变量。
踩坑提示:如果你是在mod_rewrite规则里写配置,mod_rewrite自身有一套独立的变量体系,那里面是支持
%{SERVER_ADDR}写法的,和ap_expr的变量命名不通用,别把两个语法环境的变量名搞混。
内容的提问来源于stack exchange,提问作者Lokomotywa
相关产品推荐
相关产品推荐

