Apache-2.4
Apache 反向代理未將自定義標頭傳遞給目標伺服器
我不確定這是否是提出此類問題的正確地方,但同時我不知道有什麼更好的地方,所以請多多包涵。
我已將 Apache 配置為我的 PostGraphile 服務的反向代理。我的想法是使用 Apache 進行 kerberos 身份驗證,然後讓經過身份驗證的使用者可以使用 PostGraphile 服務。
我還需要將一些自定義標頭傳遞給該服務。
此時,我可以打開 kerberos 身份驗證或通過標頭。一旦我打開標頭身份驗證,服務端就不會出現。
這是我的虛擬主機配置:
<VirtualHost *:80> <Location /> AuthType Kerberos AuthName "Kerberos Authentication" KrbAuthRealsm MY.REALM KrbServiceName HTTP BrowseMatch Windows gssapi-no-negotiate KrbMethodNegotiate on KrbMethodK5Passwd off Krb5Keytab /path/to/keytab.keytab # require valid-user # with this line uncomented headers defined later do not appear on service side require all granted # with this line uncommented headers defined later do appear on service side however any user can access the service ProxyPass 'http://my.service:5000' ProxyPassReverse 'http://my.service:5000' </Location> <Proxy *> Order Deny,Allow Deny from all Allow from local.ip.range </Proxy> RequestHeader set MYCUSTOMHEADER foo </VirtualHost>
我沒主意了。
我一直在閱讀 Apache 文件、auth_mode_kerb 文件、堆棧執行緒和部落格,但似乎我在這裡遇到了一些奇怪的錯誤或遺漏了一些基本的東西……
任何提示都會非常受歡迎
經過試驗,我終於找到了滿足我需求的解決方案,但是我必須承認我不知道為什麼它會以它看起來的方式工作。
如果我在我的配置中添加以下內容,我可以在
Authorization
標題中傳遞我需要的資訊。RewriteEngine On RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule .* - [E=RU:%1] RequestHeader add Authorization %{RU}e
然而,其他自定義標題仍然沒有出現,這對我來說仍然是一個謎。
編輯:
在擺弄了更多之後,我發現一旦我覆蓋了授權標頭,我的自定義標頭也會顯示出來。如果這是預期的行為(可能是安全功能)還是 mod-auth-kerb 中的錯誤,將會很高興。
編輯:
匿名使用者強調說
KrbAuthRealsm
(應該是KrbAuthRealm
)有一個錯字 - 我無權訪問該測試設備,不記得我是在複製/粘貼還是打字,但因為同一個匿名使用者決定刪除我添加的答案它在這裡作為編輯。