Nginx 虚拟主机配置

Nginx虚拟主机


虚拟主机提供了在同一台服务器上运行多个网站的功能,启动的是一个nginx实例,部署多个虚拟主机来发布多个门户网站。虚拟主机标识是server,一个server对应一个虚拟主机。

 

虚拟主机的三种模式


(1)基于多域名方式配置虚拟主机

(2)基于多端口配置虚拟主机

(3)基于多ip配置虚拟主机

(1)基于多域名方式配置虚拟主机

基于多域名的虚拟主机是最常见的一种虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的IP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。

网域名称系统(DNS,Domain Name System,将域名和IP地址相互映射的一个分布式数据库)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

ps:如果没有特殊要求,最好还是使用基于多域名的虚拟主机。

hosts文件:在本机计算机上面,配置本地的ip地址和域名映射关系,通常用于测试。Windows 本地hosts文件,域名在本地的hosts里面做解析,不走公网。

C:\Windows\System32\drivers\etc\hosts

如果所有的虚拟主机都写在http下面会过于庞大很乱,每个server对应一个配置文件这样方便管理(有几个conf文件就有几个server,同理就有几个网站)。通过include函数进行serevr配置文件的引用(在http块内将所有的server删除,使用include进行引用,这样非常简洁明了),这条语句写在http指令块当中。

include /usr/local/nginx/conf/vhost/*.conf; 

Nginx 虚拟主机配置_第1张图片

[root@www ~]# mkdir -p /usr/local/nginx/conf/vhost  --vhost下面都是每台虚拟主机的配置

创建三台虚拟主机

[root@www ~]# vim /usr/local/nginx/conf/vhost/www.test.com.conf --配置第一台虚拟主机以.conf结尾
    server {
        listen       80;
        server_name  www.test.com;
        charset utf-8;
        root /data/www/test;    
        index  index.html index.htm;
     }

[root@www ~]# vim /usr/local/nginx/conf/vhost/www.test1.com.conf  --配置第二台虚拟主机
    server {
        listen       80;
        server_name  www.test1.com;
        charset utf-8;
        root /data/www/test1;    
        index  index.html index.htm;
     }

[root@www ~]# vim /usr/local/nginx/conf/vhost/www.tes2.com.conf  --配置第三台虚拟主机
    server {
        listen       80;
        server_name  www.test2.com;
        charset utf-8;
        root /data/www/test2;    
        index  index.html index.htm;
     }

创建每个server的发布目录,这些站点的路径是不存在的,需要手动创建(mkdir -p /data/www/test1 test2 test3)

[root@www ~]# echo "this is test" > /data/www/test/index.html

[root@www ~]# echo "this is test1" > /data/www/test1/index.html

[root@www ~]# echo "this is test2" > /data/www/test2/index.html

配置本地hosts文件用于域名解析(C:\Windows\System32\drivers\etc)

192.168.179.99  www.test.com    www.test1.com   www.test2.com

(2)基于多端口配置虚拟主机(可以使用同一个ip,通过访问不同的端口来访问)

[root@www ~]# vim /usr/local/nginx/conf/vhost/www.test1.com.conf  --修改之前的配置文件,绑定8080端口
   server {
        listen       8080;
        server_name  www.test1.com;
        charset utf-8;
        root /data/www/test1;
        index  index.html index.htm;

     }
[root@www ~]# netstat -tpln | grep 80  --可以看到虚拟主机test1用的是8080端口,虚拟主机test用的是80端口
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      55384/nginx: master 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      55384/nginx: master 

Nginx 虚拟主机配置_第2张图片

(3)基于多IP的虚拟主机(通过添加多个网卡或者在一块物理网卡上绑定多个IP地址来实现)

[root@www ~]# ip a

 ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:b4:88:32 brd ff:ff:ff:ff:ff:ff

    inet 192.168.179.99/24 brd 192.168.179.255 scope global ens33

       valid_lft forever preferred_lft forever

    inet 192.168.179.150/24 brd 192.168.179.255 scope global secondary ens33:1

       valid_lft forever preferred_lft forever

[root@www ~]# vim /usr/local/nginx/conf/vhost/www.test.com.conf 
    server {
        listen    192.168.179.99:80;
        server_name  www.test.com;
        charset utf-8;
        root /data/www/test;
        index  index.html index.htm;

     }
[root@www ~]# vim /usr/local/nginx/conf/vhost/www.test1.com.conf 
    server {
        server_name  www.test1.com;
        listen 192.168.179.150:80;    --绑定IP,因为含有多个IP,所以要监听不同IP的80端口
        charset utf-8;
        root /data/www/test1;
        index  index.html index.htm;

     }

在/etc/hosts配置

192.168.179.99  www.test.com   

192.168.179.150  www.test1.com

[root@www ~]# netstat -tpln 

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    

tcp        0      0 192.168.179.150:80      0.0.0.0:*               LISTEN      2510/nginx: master  

tcp        0      0 192.168.179.99:80       0.0.0.0:*               LISTEN      2510/nginx: master

[root@www ~]# echo "this is 192.168.179.150:80" > /data/www/test1/index.html

[root@www ~]# curl www.test1.com

this is 192.168.179.150:80

你可能感兴趣的:(Nginx,nginx)