Apache:重写然后代理

时间:2016-03-02 01:08:43

标签: apache mod-rewrite virtualhost mod-proxy

所以,我有两台服务器,让我们称它们为#server而另一台为#another#server

nice#server是客户端将要与之交谈的,并且正在运行Apache2,为简单服务执行基本的反向代理,#another #server在端口上托管专有的应用服务器。我需要在它们通过之前完全重写两个url,但只需在所有其他URL中添加一个文件夹。

以下一些例子:

User Requests: nice#server/
Apache requests a#another#server:8080/appname

User Requests: nice#server/css#css
Apache requests a#another#server:8080/appname/css#css

User Requests: nice#server/a
Apache requests a#another#server:8080/appname/command1?name=option1

User Requests: nice#server/b
Apache requests a#another#server:8080/appname/app2?name=option2

我已经做了很多谷歌搜索并对此进行测试,但似乎无法让它工作,抱歉我没有保留我尝试过的链接!我暂时将vHost文件剥离了。

<VirtualHost *:80>
  ServerName              service#domain#com
  ErrorLog                ${APACHE_LOG_DIR}/service-domain-com-error.log
  LogLevel                warn
  CustomLog               ${APACHE_LOG_DIR}/service-domain-com-access.log combined
  ProxyPreserveHost       On
  ProxyRequests           off
  ProxyPass               / a#another#server:8080/
  ProxyPassReverse        / a#another#server:8080/
</VirtualHost>

提前感谢您提供有关如何执行此操作的任何指导。

1 个答案:

答案 0 :(得分:1)

我设法通过一些试验和错误来解决这个问题。在这里发布解决方案以防其他人遇到问题。

工作配置文件

<VirtualHost *:80>
    ServerName              service.domain.com

    ErrorLog                ${APACHE_LOG_DIR}/internal-fqdn-error.log
    LogLevel                warn
    CustomLog               ${APACHE_LOG_DIR}/internal-fqdn-access.log combined

    RewriteEngine           On
    RewriteRule             ^/a$ /appname/command1?name=option1 [PT]

    ProxyPreserveHost       On
    ProxyRequests           off
    ProxyPass               /       http://a.another.server:8080/
    ProxyPassReverse        /       http://a.another.server:8080/
</VirtualHost>