使用mod_rewrite的服务器名称时,为什么我的页面页面会返回空白?

时间:2015-02-07 00:34:36

标签: apache mod-rewrite virtualhost mod-proxy

我正在使用Apache,mod_rewrite,mod_pagespeed和mod_proxy。

当通过IP(10.10.10.12:80)访问我的页面时,它成功地将我重写为10.10.10.12:81,然后将我代理到外部服务器(10.10.10.13)。

通过DNS名称(www.example.com)访问我的页面时,它会返回一个空白页面。查看源代码显示我的pagespeed配置已应用,但我的JS没有渲染,也没有显示任何内容。

以下是我配置中的相关代码:

<VirtualHost *:80>
  ProxyRequests off
  ServerAdmin xxx@xxx.com
  DocumentRoot /var/www/html

  RewriteEngine On
  RewriteLog "/home/dvanpham/rewrite.log"
  RewriteLogLevel 3

  #Directs escaped fragment code to an external rendering server
  RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*) [NC]
  RewriteRule .* http://10.10.111.54:82/?page=http://10.10.111.54:81/#!%1 [NE,P,L]

  #Directs all other traffic to port 81, which then sends traffic to 2 other servers
  RewriteRule ^(.*)$ http://10.10.111.54:81$1 [NE,P]

  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
  RewriteRule .* - [F]
</VirtualHost>

<VirtualHost *:81>
  ProxyRequests off
  <Proxy balancer://regscluster>
    # BalancerMember http://10.10.112.47:8280
    BalancerMember http://10.10.112.48:8280
    Order Deny,Allow
    Deny from none
    Allow from all
    ProxySet lbmethod=byrequests
  </Proxy>
  ProxyPass / balancer://regscluster/
</VirtualHost>

<VirtualHost *:82>
  ProxyRequests off
  <Proxy balancer://nodecluster>
    BalancerMember http://10.10.111.56:8080
    BalancerMember http://10.10.111.57:8080
    Order Deny,Allow
    Deny from none
    Allow from all
    ProxySet lbmethod=byrequests
  </Proxy>
  ProxyPass / balancer://nodecluster/
</VirtualHost>

如果我能提供更多信息或您对这个问题有任何见解,请告诉我!

编辑:使用域名时,问题似乎与mod_pagespeed和mod_rewrite有关。

1 个答案:

答案 0 :(得分:0)

问题是mod_pagespeed正在侦听ProxyPass并相应地重写URL但没有收听RewriteRule。

设置

“ModPagespeedMapOriginDomain http://localhost * .domain.com”

做了这个伎俩。