Назад | Перейти на главную страницу

RequestHeader с переменной среды Apache

У меня Apache настроен как балансировщик нагрузки. Я хотел, чтобы apache установил заголовок X-Forwarded-Proto, но это не работает:

RequestHeader set X-Forwarded-Proto "%{SERVER_PROTOCOL}e"

Заголовок становится равным нулю. Есть идеи, почему?

Поздно, но все же я только что столкнулся с той же проблемой, и это сработало для меня:

RequestHeader set X_FORWARDED_PROTO 'https' env=HTTPS

В документация говорит:

Когда директива RequestHeader используется с аргументом add, append или set, четвертый аргумент может использоваться для указания условий, при которых будет выполняться действие. Если переменная среды, указанная в аргументе env = ..., существует (или если переменная среды не существует и указано env =! ...), то действие, указанное в директиве RequestHeader, вступит в силу. В противном случае директива не повлияет на запрос.

В то время как переменная среды HTTPS устанавливается только тогда, когда запрос выполняется через SSL.

Вы этого не хотите; он установил бы ваш заголовок на «HTTP / 1.1» (даже в запросе https) - вероятно, не очень полезно для того, что вы передаете.

У вас разные блоки VirtualHost для http и https; просто жестко закодируйте RequestHeader настройка в каждом.

<VirtualHost *:80>
    RequestHeader set X-Forwarded-Proto "http"
    ...
</VirtualHost>

<VirtualHost *:443>
    RequestHeader set X-Forwarded-Proto "https"
    ...
</VirtualHost>

Вы можете исправить это, используя early ключевое слово:

RequestHeader set X-Forwarded-Proto "https" early

В противном случае вы можете сделать то, что предложил Джон Креншоу, а именно использовать RewriteRule вместо того ProxyPass директивы.

Нашел причину. Оказывается, это вопрос порядка работы. mod_rewrite отвечает за предоставление этих переменных среды, но Apache не обрабатывает их, пока ПОСЛЕ обработки любых запросов ProxyPass. А до тех пор он просто установит null. Единственный обходной путь, похоже, - проксировать через mod_rewrite.

Видеть http://www.gossamer-threads.com/lists/apache/users/267160?do=post_view_threaded#267160