我使用apache 2.4並嘗試在conf文件中使用環境變量進行代理傳遞。有一個線程[Apache proxypass using a variable URL with interpolate]說起這個:如何使用mod_rewrite的環境變量在httpd.conf中插入proxypass
RewriteEngine on
RewriteMap lowercase int:tolower
#This sets the variable to env:
RewriteRule^- [E=SERVER_NAME:${lowercase:%{SERVER_NAME}}]
#Now interpolate makes variables available for proxypass & proxypassreverse:
ProxyPassInterpolateEnv On
ProxyPass/ajp://${SERVER_NAME}:8009/ interpolate
ProxyPassReverse/ajp://${SERVER_NAME}:8009/ interpolate
但是,當我嘗試這樣做我自己,我得到一個「AH00111:配置變量$ {SERVER_NAME}沒有定義」的錯誤。這意味着Apache2.4將$ {SERVER_NAME}視爲配置變量,而不是環境變量。
我用mod_rewrite的語法時才爲變量,這樣也試過,
ProxyPass/ajp://%{ENV:SERVER_NAME}:8009/ interpolate
ProxyPassReverse/ajp://%{ENV:SERVER_NAME}:8009/ interpolate
可是%{ENV:SERVER_NAME}被視爲明文字符串,因爲它不是一個有效的URL通創建了一個錯誤。
配置變量在服務器啓動時使用「Define」塊定義。我想要的是讓SERVER_NAME在運行時使用mod_rewrite進行更改。 我無法使用mod_rewrite [P]參數,因爲我需要讓ProxyPassReverse塊也與變量一起工作。 mod_rewrite無法處理重寫響應,因此無法模仿ProxyPassReverse的功能。
有關如何在插值proxypass conf指令中使用環境變量的任何想法?
也很重要,它似乎設置位置塊內的環境變量不起作用,你需要把它放在虛擬主機塊 – user230910