【发布时间】:2016-05-28 17:43:31
【问题描述】:
我已将 apache http webserver 2.2.29 配置为代理。它的功能是将传入的请求重定向到后端服务器。下面是流程。
客户端使用 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]
因此我假设重定向工作正常。但是,它不是……因为服务器没有收到任何请求?我在配置中做错了什么吗?
更新: 我通过在末尾添加 [P] 更新了 RewriteRule 指令,这很有效,我的问题得到了解决。
RewriteRule (.*)$ https://sit-alfresco.rpmi.co.uk:443$1 [P]
【问题讨论】:
标签: apache redirect mod-rewrite