我如何设置VirtualHosts指向同一IP上的两个端口到不同的ServerNames?

我已经build立了wiki软件Gitit在同一个Apache服务器(端口1848和4000)的两个独立的端口上运行。 我已经确认他们正在运行:

http://wcaleb.rice.edu:4000
http://wcaleb.rice.edu:1848

现在我想代理这两个网站更漂亮的url,如http://wiki.wcaleb.rice.edu和http://hist118.wcaleb.rice.edu 。 两者的IP地址是128.42.173.84

我的服务器pipe理员添加了这些名字的DNS条目,但我似乎无法让我的Apacheconfiguration工作。 按照这里的说明 ,我试图build立一个像这样的VirtualHost:

NameVirtualHost *:1848 <VirtualHost *:1848> ServerName hist118.wcaleb.rice.edu DocumentRoot /var/www/ RewriteEngine On ProxyPreserveHost On ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPassReverse / http://127.0.0.1:1848 RewriteRule ^(.*) http://127.0.0.1:1848$1 [P] ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On </VirtualHost> 

而另一个相似的虚拟主机在端口4000的http://wiki.wcaleb.rice.edu 。但是,当我然后发出service httpd restart ,我得到一个FAILED消息,当启动httpd,我的浏览器无法连接到http:/ / /hist118.wcaleb.rice.edu 。

据我所知,我的httpd.conf的其余部分是分配的默认文件。 我的服务器正在RedHat Enterprise机器上运行。 我是Apache的新手,所以我确信这里有一个明显的答案,但在尝试对configuration进行各种调整之后,我无法弄清楚我做错了什么。

Solutions Collecting From Web of "我如何设置VirtualHosts指向同一IP上的两个端口到不同的ServerNames?"

这是你需要做的。

  NameVirtualHost *:80 <VirtualHost *:80> serverName hist118.wcaleb.rice.edu DocumentRoot /var/www/ RewriteEngine On ProxyPreserveHost On ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPassReverse / http://127.0.0.1:1848 RewriteRule ^(.*) http://127.0.0.1:1848$1 [P] ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined serverSignature On </VirtualHost> 

NameVirtualHostVirtualHost上删除:1848 (或将其更改为:80 )。 本练习的要点是让Apache监听这些主机名的默认HTTP端口(端口80),并向Gitit正在监听的高端口代理通信。