如何在带斜杠或不带斜杠的情况下反向代理


11

我有一个需要反向代理站点的Apache Web服务器。因此,example.com/test/example.com/test从同一台其他Web服务器上拉取。我已经为反向代理设置了一个反向代理,而没有这样的斜杠:

ProxyPass /test http://othersite.com/test
ProxyPassReverse /test http://othersite.com/test

但这不能跟斜杠一起使用。

有任何想法吗?我尝试从重定向/test//test没有运气。

谢谢。

Answers:


18

您是否尝试过重写网址?

RewriteEngine on 
RewriteRule ^/test$ /test/ [R]

ProxyRequests Off       
ProxyPreserveHost On

ProxyPass    /test/   http://othersite.com/test/
ProxyPassReverse /test/  http://othersite.com/test/

1

您是什么意思,它不能与斜杠一起使用?它会重定向到错误的地方吗?它会显示404错误吗?这就是我用来建立反向代理并将源隐藏在世界其他地方的方法。

ProxyRequests off
<Location /guides>
  ProxyPass http://blog.domain.com
  ProxyPassReverse http://blog.domain.com
  ProxyPassReverse /
  ProxyHTMLEnable On
  ProxyHTMLURLMap / /guides
  ProxyHTMLURLMap http://blogs.domain.com /guides
  RequestHeader unset Accept-Encoding
  RequestHeader set MySpecialHeader secretkey
  #LogLevel proxy:debug
</Location>

您可以使用它来测试您的代理:

$ curl -I http://localhost:81/guides/top5
HTTP/1.1 301 Moved Permanently
Location: http://localhost:81/guides/top5/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.