我已將apache http webserver 2.2.29配置爲代理。它的功能是將傳入的請求重定向到後端服務器。以下是流程。Mod_rewrite在apache中不工作
客戶端使用url https://iproxy.company.co.uk:8443/cis1
發送請求。 Apache實例正在偵聽iproxy.company.co.uk:8443
。此請求必須發送到url https://i.company.co.uk:8443
上的後端服務器。爲了達到這個目的,我使用了mod_rewrite。下面是在httpd-alias.conf文件中配置的。
`Listen iproxy.company.uk:8443
ServerName iproxy.company.uk:8443
DocumentRoot /app/
RewriteEngine On
RewriteRule (.*)$ https://i.company.co.uk:8443$1 [R=301,L]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"
RewriteLog /app/instance1/logs/rewrite.log
RewriteLogLevel 5
ErrorLog "/app/instance1/logs/error_log"
TransferLog "/app/instance1//logs/access_log"
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
SSLCertificateFile "/app/certificates/star.cer"
SSLCertificateKeyFile "/app/certificates/star.key"
SSLCertificateChainFile "/app/certificates/rootCAChain.pem"
CustomLog "/app/instance1/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>`
我也配置了重寫洛至5我越來越低於改寫記錄的水平。
我打以下命令來檢查重定向工作
curl -k https://iproxy.company.co.uk:8443/cis1
獲得以下輸出
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <ahref="http://i.company.co.uk:8443/cis1">here</a>.</p> </body></html>
我還可以看到下面印在改寫日誌。
redirect to https://i.company.co.uk:8443/ci1 [REDIRECT/301]
因此我假設重定向工作正常。但是,它不是..因爲服務器沒有收到任何請求?我在配置中做錯了什麼?
更新: 我已經更新了RewriteRule指令,在最後添加了[P],它工作正常,問題得到解決。
RewriteRule (.*)$ https://sit-alfresco.rpmi.co.uk:443$1 [P]
威爾的ProxyPass能夠保持URI相同傳入請求我期待URI來對每個不同請求 – user2607367
上述配置將在https://iproxy.company.co.uk:8443/cis1上顯示頁面https://i.company.co.uk:8443/cis1的內容。對於其他頁面也是如此。所以基本上它映射主機。請注意,該網頁上的任何絕對引用都將保留爲i.company.co.uk(儘管也可以繞過此網站)。如果這不是你想要的,那麼我認爲如果你澄清你的問題是最好的。 –
它現在正在爲我工作。謝謝很多。我已經用答案更新了問題 – user2607367