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

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

我当前工作的 apache 配置所有东西都在端口 80 上运行(通常),但我正在向前端添加一个节点代理,它将在 80 上监听并根据请求的主机转发到其他 Web 服务器。

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

NameVirtualHost *.80
Listen 80

在我的网站中,我有一个配置文件,名为“blog”,该文件有特定的虚拟主机

<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,则该端口将不会提供任何服务(注意 -port 80 仍会按您预期的方式提供所有服务)

我是否需要修改文件中的 *.80 行?如果需要,修改成什么?127.0.0.1:9000 还是?

更新2

如果我在所有 vhosts / ports.conf 中将 NameVirtualHost 修改为 *: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

答案1

您只需将所有出现的更改809000,然后重新启动您的网络服务器。

service apache2 restart

答案2

这很简单,将所有出现的 改为809000配置代理时,只需将其指向端口 9000。

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

sudo /etc/init.d/apache2 restart

答案3

或者:

添加:

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 中的值并重新启动来同时控制所有 vhost 的 HTTP 端口。如果您需要快速绕过代理,这很方便。

相关内容