虚拟主机

时间:2016-11-09 21:02:49

标签: apache url-rewriting proxy subdomain virtualhost

首先,我正在使用apache作为在机器中另一个端口上运行的应用程序的HTTP服务器。

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName domain.com
  ServerAlias *.domain.com
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>

该应用会识别以下网址:domain.com/accounts/profile,但我想要做的是使用accounts.domain.com/profile

如果我使用另一个带有ProxyPass的VirtualHost来添加子域,则应用程序将无法运行,因为如果我执行此操作,应用程序只能理解路由/帐户/配置文件:

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName accounts.domain.com
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/accounts/
  ProxyPassReverse / http://127.0.0.1:9000/accounts/
</VirtualHost>

并转到accounts.domain.com/profile,该应用只会使用/ profile /。 我可以通过进一步配置VirtualHost和代理来实现这一目标吗?

我也读过其他可能使用重写的地方,我可以修复它,就像.httaccess文件的工作原理一样。 我正在尝试这样的事情

<VirtualHost *:80>
  ProxyPreserveHost On
  ServerName domain.com
  ServerAlias *.domain.com
  ProxyPass  /excluded !
  ProxyPass / http://127.0.0.1:9000/
  ProxyPassReverse / http://127.0.0.1:9000/
  RewriteEngine On
  RewriteCond %{HTTP_HOST}    ^accounts\.domain\.com$ [NC]
  RewriteRule "^/(.*)$"  "http://domain.com/accounts/$1"  [P]
</VirtualHost>

最终给了我502代理错误

  

代理错误

     

代理服务器收到来自上游服务器的无效响应。   代理服务器无法处理请求GET / profile。

     

原因:从远程服务器读取错误

     

此外,尝试时遇到502 Bad Gateway错误   使用ErrorDocument来处理请求。

有关如何使其正常工作的任何提示?这是我第一次使用Apache而不是托管php网站,之前我的.httaccess是非常基本的。

编辑:感谢Simon在评论中指出我的错误,我无法代理ServerName。我觉得现在真的很蠢。

0 个答案:

没有答案