1)基于ip 2)基于域名 3)基于端口
一个最简单的虚拟主机的配置:
http{ listen 80; server_name nj.cc; access.log /usr/local/var/logs/nginx/access.log; location{ index index.htm index.html index.php; root /www/php; }}
### 基于IP的虚拟主机的配置
Linux freeBSD等都允许自己添加IP别名,设置IP别名只需要配置系统上的网络接口,让它监听额外的IP地址,在Linux系统上可以使用ifconfig或者route添加ip别名.
eg: ifconfig 会显示下边本地ip信息,其中eth0是本机ip
lo是本地回环设备,默认永不宕掉,它的主要作用有两个:
1)测试本机网络设置,能ping通127.0.0.1 说明本机的网卡和ip协议都按照正确
2)某些server/client的应用程序再运行时必须调用服务器上的资源,一般要指定server的ip,当该程序要在同一台机器上运行且没有别的server时,可以把server装在本机,server的ip设置为127.0.0.1
eg:使用ifconfig和route命令来添加2个虚拟ip 192.168.1.1 192.168.1.2
/sbin/ifcofig eth0:1 192.168.1.1 broadcast 192.168.1.255 netmask 255.255.255.0 up/sbin/route add -host 192.168.1.1 dev eth0:1/sbin/ifcofig eth0:1 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 up/sbin/route add -host 192.168.1.2 dev eth0:1
此时,若可以使用ping命令ping通,则配置无误,但是使用命令设置的ip别名在服务器重启后会失效,可以
将上边的代码添加到 /etc/rc.local 中,使之永久有效
基于ip的虚拟主机配置
##基于ip的虚拟主机配置http{ ## 第一个虚拟主机 server{ #监听的ip和端口 listen 192.168.8.43:80; #主机名称 server_name 192.168.8.43; #访问日志的存放路径 access_log logs/server1.access.log combined; location /{ #默认首页文件,从左到有,若找不到index.html就找index.htm.. index index.html index.htm #网页存放目录 root /data0/htdocs/server1; } } ##第二个虚拟主机 server{ listen 192.168.8.44:80; server_name 192.168.8.44; access_log logs/server2.access.log combined; location /{ index index.html index.htm root /data0/htdocs/server2; } }
基于域名的虚拟主机配置
##基于域名的虚拟主机配置,也是比较常用的一种虚拟方式http{ ## 第一个虚拟主机 server{ #监听的ip和端口 listen 80; #主机名称 server_name nj1.com; #访问日志的存放路径 access_log logs/nj1.com.access.log combined; location /{ #默认首页文件,从左到有,若找不到index.html就找index.htm.. index index.html index.htm #网页存放目录 root /data0/htdocs/nj1; } } ##第二个虚拟主机 server{ listen 80; server_name nj2; access_log logs/nj2.com.access.log combined; location /{ index index.html index.htm root /data0/htdocs/nj2; } }
