我当前工作的 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
您只需将所有出现的更改80
为9000
,然后重新启动您的网络服务器。
service apache2 restart
答案2
这很简单,将所有出现的 改为80
。9000
配置代理时,只需将其指向端口 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 端口。如果您需要快速绕过代理,这很方便。