上次编译安装apache之后, 研究了一下Apache的vhost配置. 用一台服务器,跑上N多个网站:
step1. 编辑httpd.conf: sudo vim conf/httpd.conf
找到#LoadModule vhost_alias_module modules/mod_vhost_alias.so,并去掉前面的#
#Include conf/extra/httpd-vhosts.conf, 也去掉#
step2. 编辑conf/extra/httpd-vhosts.conf
step3. 配置vhost, 一共有3种方式, 任选一种进行配置都行.
1. 基于IP: 这里不介绍
2. 基于域名:
重点: ServerName , <Directory > Required all granted</Directory> 这两个一定要配置正确.
测试: 编辑host, sudo vim /etc/hosts
127.0.0.1 www.a.com
127.0.0.1 www.b.com
浏览器访问: www.a.com www.b.com , 访问成功.
详细配置如下:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/opt/httpd/test/a"
ServerName www.a.com
ErrorLog "/opt/httpd/test/a/error_log"
CustomLog "/opt/httpd/test/a/access_log" common
<Directory "/opt/httpd/test/a">
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/opt/httpd/test/b"
<Directory "/opt/httpd/test/b">
Require all granted
</Directory>
ServerName www.b.com
ErrorLog "/opt/httpd/test/b/error_log"
CustomLog "/opt/httpd/test/b/access_log" common
</VirtualHost>
3. 基于端口:
不用修改host,本地通过localhost:80 localhost:8080 来访问
编辑httpd-vhost.conf sudo vim conf/extra/https-vhost.conf
这里只列出了最简单的属性, 当然,你可以设置 ServerName, log 等等,其他的属性. 如下配置也完全可以运行.
测试: localhost:80 localhost:8080
<VirtualHost *:80>
DocumentRoot "/opt/httpd/test/a"
<Directory "/opt/httpd/test/a">
Require all granted
</Directory>
</VirtualHost>
Listen 8080
<VirtualHost *:8080>
DocumentRoot "/opt/httpd/test/b"
<Directory "/opt/httpd/test/b">
Require all granted
</Directory>
</VirtualHost>
OK, follow my steps 1. 2.3. Done