我想configurationapache,以便http://my-domain.com/myapp提供在后台服务器上运行CherryPy的Python webapp。
以下是虚拟主机中的内容:
RewriteRule ^/myapp/?(.*) http://backend-server:8000/$1 [P] ProxyPassReverse /myapp/ http://backend-server:8000/
当我追踪请求/响应时,我看到:
GET /myapp HTTP/1.1 Host: my-domain.com
接着:
HTTP/1.1 303 See Other Date: Thu, 15 Sep 2011 21:46:35 GMT Server: CherryPy/3.1.2 Content-Type: text/html;charset=utf-8 Location: http://my-domain.com/somwhere-else/
正如你所看到的,CherryPy webapp发送303redirect到/ somewhere-else /
任何想法为什么Apache ProxyPassReverse不会将位置转换为http://my-domain.com/myapp/somewhere-else ?
您的源位置是/myapp ,而您的ProxyPassReverse是/myapp/ ; 代理位置的上下文不匹配,所以ProxyPassReverse不适用。
为什么mod_rewrite代理? 这应该完成相同的,并没有尾随斜线一致性问题:
ProxyPass /myapp http://backend-server:8000 ProxyPassReverse /myapp http://backend-server:8000