2014-01-09 2 views
1

Я использую apache как интерфейс http-прокси-сервера. Мне нужно отправить заголовок со значением из определенной переменной среды во все прокси-запрос. Как это:Как base64 кодировать заголовок apache?

RequestHeader set myheader %{FOO}e 

Вопрос заключается в том, что значение из переменной окр FOO должен быть в кодировке base64. Возможно ли b64-кодировать значение заголовка на лету?

mod_rewrite? подзапрос? пользовательский модуль? ...

Btw, переменная env создается другим модулем apache, к сожалению, я не могу исправить.

ответ

4

Я понял. Использование mod_rewrite для чтения/записи стандартного ввода/стандартный вывод из внешней программы, как это:

ProxyRequests on 
RewriteEngine on 

# 1 
RewriteMap base64map "prg:/bin/b64e" 

# 2 
RewriteRule .* - [E=WIC:${base64map:%{QUERY_STRING}},NE] 

# 3 
RequestHeader set x-b64encoded "%{WIC}e" 

# 4 
RewriteRule ^proxy/.*$ http://localhost:9999 [P] 
  1. Создать переписывания-карту с именем base64map которой запускается исполняемый (/bin/b64e), который читает стандартный ввод и кодирует на стандартный вывод.
  2. Правило rewrite передает строку запроса (или все, что вы хотите) для сопоставления с именем base64map. Выход используется для установки переменной apache WIC в кодированное значение.
  3. Запрос заголовка x-b64encoded создается из значения в WIC
  4. Наконец, запрос проксируется к месту назначения и заголовок автоматически включается с запросом.
Смежные вопросы