【问题标题】: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>

【问题讨论】:

    标签: python apache .htaccess virtualhost httpd.conf


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 2018-01-27
      • 1970-01-01
      • 2013-11-30
      • 2013-04-23
      相关资源
      最近更新 更多