如何修改使用NamedVirtualHosts的每个虚拟主机上运行的端口apache2?

我目前正在工作的Apacheconfiguration一切运行在端口80(通常),但我要添加一个节点代理到前端,这将监听80并转发到其他Web服务器根据主机请求。

这时我的httpd.conf文件是空的,ports.conf文件如下所示

NameVirtualHost *.80 Listen 80 

在我的网站内 – 可用我有名为“博客”的configuration文件 – 该文件具有特定的虚拟主机

 <VirtualHost *:80> ServerName www.mysite.com:80 DocumentRoot /www/blog.mysite.com/current/static 

我应该修改什么,如果我只是想让Apache像现在一样工作 – 除了在9000端口?

下面列出了Apache的信息 – 在Ubuntu 12.04上新安装

 root@mybox:/etc/apache2# apache2 -v Server version: Apache/2.2.22 (Ubuntu) 

更新1

如果我将每个vhost和ports.conf从80更改为9000并重新启动-apache将不会在该端口上提供任何东西(请注意,端口80仍按照您的预期提供所有内容)

我需要修改文件中的行* .80吗? 如果是的话? 127.0.0.1:9000还是?

更新2

如果我修改NameVirtualHost是所有我的vhosts / ports.conf中的*:9000,我得到下面的错误

 root@mybox:/etc/apache2/sites-available# service apache2 restart * Restarting web server apache2 [Sat Jul 21 12:24:56 2012] [warn] _default_ VirtualHost overlap on port 9000, the first has precedence [Sat Jul 21 12:24:56 2012] [warn] _default_ VirtualHost overlap on port 9000, the first has precedence [Sat Jul 21 12:24:56 2012] [warn] NameVirtualHost *:80 has no VirtualHosts ... waiting [Sat Jul 21 12:24:57 2012] [warn] _default_ VirtualHost overlap on port 9000, the first has precedence [Sat Jul 21 12:24:57 2012] [warn] _default_ VirtualHost overlap on port 9000, the first has precedence [Sat Jul 21 12:24:57 2012] [warn] NameVirtualHost *:80 has no VirtualHosts 

您应该只是将所有出现的809000 ,然后重新启动您的networking服务器。

 service apache2 restart 

这很简单,把所有的事情都改成809000 。 configuration代理时,只需要将其指向端口9000。

完成更改后,请不要忘记重新启动apache服务器:

 sudo /etc/init.d/apache2 restart 

或者:

加:

 export VHOST_PORT_HTTP=9000 

到/ etc / apache2 / envvars

更改:

 NameVirtualHost *:80 Listen 80 

 NameVirtualHost *:${VHOST_PORT_HTTP} Listen ${VHOST_PORT_HTTP} 

在/etc/apache2/ports.conf中

并在每个虚拟主机的顶部,使用:

 <VirtualHost *:${VHOST_PORT_HTTP}> 

然后,您可以通过更改/ etc / apache2 / envvars中的值并重新启动来同时控制所有虚拟主机的HTTP端口。 方便,如果你需要绕过代理匆忙。