将部分流量重定向到其他服务器
Posted
技术标签:
【中文标题】将部分流量重定向到其他服务器【英文标题】:Redirect a part of traffic to other server 【发布时间】:2015-10-22 21:06:51 【问题描述】:在我的服务器上,我想通过以下方式重定向通过端口 80 访问的所有流量:
http://12.34.56.78/blahblah/...
到 Python 网络服务器,例如监听端口 7777...
... 其余的 http://12.34.56.78/(anythingelse)/... 到 /home/www/
使用 Apache。
访问http://12.34.56.78/blahblah/时,我得到:
内部服务器错误
服务器遇到内部错误或配置错误,并且 无法完成您的请求。
为什么它不适用于以下 Apache 配置?
<VirtualHost *:80>
ServerName 12.34.56.78
DocumentRoot /home/www/
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName 12.34.56.78
<Directory /blahblah/>
RewriteEngine On
RewriteRule /(.*) localhost:7777/$1 [P,L]
</Directory>
</VirtualHost>
【问题讨论】:
【参考方案1】:问题只是您正在使用带有 mod_rewrite 的第二个虚拟主机。
RewriteRule 的工作方式是您在 URL 中指定要匹配的路径,然后它会重写为其他内容(或本例中的代理)。
此外,目录元素是指主机上的特定真实目录。根据您的问题,您似乎不希望您的 RewriteRules 在 Directory 元素中。
此外,您应该在代理的 RewriteRule 中指定 URL 方案。
按照这些思路应该可以工作。
<VirtualHost *:80>
ServerName 12.34.56.78
DocumentRoot /home/www/
<Directory />
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
Require all granted
</Directory>
RewriteEngine On
RewriteRule ^/blahblah(.*)$ http://localhost:7777$1 [P,L]
</VirtualHost>
【讨论】:
以上是关于将部分流量重定向到其他服务器的主要内容,如果未能解决你的问题,请参考以下文章
使Java HTTP会话无效以重定向到其他服务器,而无需将用户注销