Я хотел бы получить значение переменной окружения и присвоить его другой переменной в Apache.
Например, получить значение $_SERVER['REMOTE_ADDR']
назначить это $_SERVER['USER-IP']
и переопределить $_SERVER['REMOTE_ADDR']
к 127.0.0.1
Я не могу получить значение REMOTE_ADDR
<IfDefine !USER-IP>
SetEnv USER-IP %{REMOTE_ADDR}
SetEnv REMOTE_ADDR '127.0.0.1'
</IfDefine>
Глядя на документы, $_SERVER['REMOTE_ADDR']
var - не строго переменная среды, а метапеременная запроса cgi, предоставляемая веб-сервером контексту cgi; http://www.faqs.org/rfcs/rfc3875.html
Мета-переменные содержат данные о запросе, переданном от сервера скрипту.
meta-variable-name = "AUTH_TYPE" | "CONTENT_LENGTH" |
"CONTENT_TYPE" | "GATEWAY_INTERFACE" |
"PATH_INFO" | "PATH_TRANSLATED" |
"QUERY_STRING" | "REMOTE_ADDR" |
"REMOTE_HOST" | "REMOTE_IDENT" |
"REMOTE_USER" | "REQUEST_METHOD" |
"SCRIPT_NAME" | "SERVER_NAME" |
"SERVER_PORT" | "SERVER_PROTOCOL" |
"SERVER_SOFTWARE" | scheme |
В документации apache указано, что эти переменные нельзя переопределить с помощью стандартного SetEnv
директивы стиля
Некоторые предостережения
Невозможно переопределить или изменить стандартные переменные CGI с помощью директив управления средой.
https://httpd.apache.org/docs/2.4/env.html#setting
Поэтому я думаю, что вряд ли вы сможете легко установить эти значения из apache conf.
(из существующих переменных сервера)
<Directory /var/www/server111>
Order allow,deny
Allow from all
# This syntax works, as you can see from the image below...
RewriteEngine On
RewriteRule .* - [E=USER-IP:%{REMOTE_ADDR}]
# none of these syntax seem to work
SetEnv USERIP %{REMOTE_ADDR}
SetEnv USERIP2 blah
SetEnv USERIP3 ${REMOTE_ADDR}
SetEnv USERIP6 %{ENV:REMOTE_ADDR}
</Directory>