1 nginx虚拟主机的概念
虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能、数据存放和传输功能,所谓虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟主机都具有独立的域名和完整的Internet服务器(支持WWW、FTP、E-mail等)功能,
简单来说就是:在web服务里面就是一个独立的网站站点。
2,常见的虚拟主机类型
1基于域名的虚拟主机,就是通过域名来区分不同的虚拟主机,企业最常用。
2基于端口的虚拟主机配置,通过不同的端口来区分虚拟主机
3基于IP的虚拟主机配置
3基于域名的虚拟主机配置
1 一个基于域名的虚拟主机配置 2 worker_processes 1; 3 error_log logs/error.log; 4 pid logs/nginx.pid; 5 6 events { 7 worker_connections 1024; 8 } 9 10 http { 11 include mime.types; 12 default_type application/octet-stream; 13 sendfile on 14 keepalive_timeout 65; 15 server { 16 listen 80; 17 server_name www.123.com; 18 location / { 19 root /data/bbb/; #网站根目录 20 index index.html index.htm; 21 } 22 location = /50x.html { 23 root html; 24 } 25 } 26 检测: 27 /usr/local/nginx/sbin/nginx -t 28 /usr/local/nginx/sbin/nginx -s reload(或者重新启动) 29 然后创建 30 mkdri -p /data/bbb/ 31 在网站跟目录追加文件
echo "http://www.123/com" >> /data/bbb/index.html
32 在linux客户端测试 33 需要在linux客户端下的hosts文件下加入 34 echo "ip www.123.com" 35 echo "192.168.0.3 www.23.com" 36 测试 37 [root@66 bbb]# curl www.123.com 38 http://www.123.com
3.1配置多个域名
只需要在多加几个server模块即可,同时加上对应的域名即可
完整配置如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 一个基于域名的虚拟主机配置 2 worker_processes 1; 3 error_log logs/error.log; 4 pid logs/nginx.pid; 5 6 events { 7 worker_connections 1024; 8 } 9 10 http { 11 include mime.types; 12 default_type application/octet-stream; 13 sendfile on 14 keepalive_timeout 65; 15 server { 16 listen 80; 17 server_name www.123.com; 18 location / { 19 root /data/bbb/; #网站根目录 20 index index.html index.htm; 21 } 22 location = /50x.html { 23 root html; 24 } 25 } 26 server { 27 listen 80; 28 server_name bbs.123.com; #域名 29 location / { 30 root /data/bbs/; #网站根目录 31 index index.html index.htm; 32 } 33 location = /50x.html { 34 root html; 35 } 36 } 37 server { 38 listen 80; 39 server_name blog.123.com; 40 location / { 41 root /data/blog/; #网站根目录 42 index index.html index.htm; 43 } 44 location = /50x.html { 45 root html; 46 } 47 } 48 49 检测: 50 /usr/local/nginx/sbin/nginx -t 51 /usr/local/nginx/sbin/nginx -s reload(或者重新启动) 52 然后创建 53 mkdri -p /data/bbb/ 54 mkdri -p /data/bbs/ 55 mkdri -p /data/blog/ 56 在网站跟目录追加文件 57 echo "http://www.123.com" >> /data/bbb/index.html 58 echo "http://bbs.123.com" >> /data/bbs/index.html 59 echo "http://blog123.com" >> /data/blog/index.html 60 在linux客户端测试 61 需要在linux客户端下的hosts文件下加入 62 echo "ip www.123.com" 63 echo "192.168.0.3 www.123.com" 64 echo "192.168.0.3 bbs.123.com" 65 echo "192.168.0.3 blog.123.com" 66 测试 67 [root@66 data]# curl bbs.123.com 68 http://bbs.123.com 69 [root@66 data]# curl blog.123.com 70 http://blog123.com 71 [root@66 data]# curl www.123.com 72 http://www.123.com 73 [root@66 data]#
上面的配置多个域名写法比较繁琐,我们可以拆开来写,方便以后扩展
加入include vhosts/*.conf;
简化nginx.conf的配置文件
如下:
1 worker_processes 1; 2 error_log logs/error.log; 3 pid logs/nginx.pid; 4 5 events { 6 worker_connections 1024; 7 } 8 9 http { 10 include mime.types; 11 default_type application/octet-stream; 12 sendfile on 13 keepalive_timeout 65; 14 include vhosts/www.conf 15 include vhosts/bbs.conf 16 include vhosts/blog.conf
然后在vhosts目录下加上上面的三个文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 server { 2 listen 80; 3 server_name www.123.com; 4 location / { 5 root /data/bbb/; #网站根目录 6 index index.html index.htm; 7 } 8 location = /50x.html { 9 root html; 10 } 11 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 server { 2 listen 80; 3 server_name bbs.123.com; #域名 4 location / { 5 root /data/bbs/; #网站根目录 6 index index.html index.htm; 7 } 8 location = /50x.html { 9 root html; 10 } 11 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 server { 2 listen 80; 3 server_name blog.123.com; 4 location / { 5 root /data/blog/; #网站根目录 6 index index.html index.htm; 7 } 8 location = /50x.html { 9 root html; 10 } 11 }
测试:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 [root@66 data]# curl bbs.123.com 2 http://bbs.123.com 3 [root@66 data]# curl blog.123.com 4 http://blog123.com 5 [root@66 data]# curl www.123.com 6 http://www.123.com
4基于端口号的配置
只需要在在上边的基础上修改listen的监听端口
具体配置如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 一个基于域名的虚拟主机配置 2 worker_processes 1; 3 error_log logs/error.log; 4 pid logs/nginx.pid; 5 6 events { 7 worker_connections 1024; 8 } 9 10 http { 11 include mime.types; 12 default_type application/octet-stream; 13 sendfile on 14 keepalive_timeout 65; 15 server { 16 listen 80; 17 server_name www.123.com; 18 location / { 19 root /data/bbb/; #网站根目录 20 index index.html index.htm; 21 } 22 location = /50x.html { 23 root html; 24 } 25 } 26 server { 27 listen 82; 28 server_name bbs.123.com; #域名 29 location / { 30 root /data/bbs/; #网站根目录 31 index index.html index.htm; 32 } 33 location = /50x.html { 34 root html; 35 } 36 } 37 server { 38 listen 82; 39 server_name blog.123.com; 40 location / { 41 root /data/blog/; #网站根目录 42 index index.html index.htm; 43 } 44 location = /50x.html { 45 root html; 46 } 47 } 48 49 检测: 50 /usr/local/nginx/sbin/nginx -t 51 /usr/local/nginx/sbin/nginx -s reload(或者重新启动) 52 然后创建 53 mkdri -p /data/bbb/ 54 mkdri -p /data/bbs/ 55 mkdri -p /data/blog/ 56 在网站跟目录追加文件 57 echo "http://www.123.com" >> /data/bbb/index.html 58 echo "http://bbs.123.com" >> /data/bbs/index.html 59 echo "http://blog123.com" >> /data/blog/index.html 60 在linux客户端测试 61 需要在linux客户端下的hosts文件下加入 62 echo "ip www.123.com" 63 echo "192.168.0.3 www.123.com" 64 echo "192.168.0.3 bbs.123.com" 65 echo "192.168.0.3 blog.123.com" 66 测试 67 [root@66 data]# curl bbs.123.com:80 68 http://bbs.123.com 69 [root@66 data]# curl blog.123.com:81 70 http://blog123.com 71 [root@66 data]# curl www.123.com:82 72 http://www.123.com 73 [root@66 data]#