欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx 虚拟主机

程序员文章站 2022-07-03 14:12:29
...

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 虚拟主机

 

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

创建三台虚拟主机

[aaa@qq.com ~]# 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;

     }
[aaa@qq.com ~]# 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;

     }

[aaa@qq.com ~]# 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的发布目录

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

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

[aaa@qq.com ~]# 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

Nginx 虚拟主机

 

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

[aaa@qq.com ~]# 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;

     }
[aaa@qq.com ~]# 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 虚拟主机

 

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

[aaa@qq.com ~]# ip a

 ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> 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

[aaa@qq.com ~]# 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;

     }
[aaa@qq.com ~]# 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

 

[aaa@qq.com ~]# 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

 

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

[aaa@qq.com ~]# curl www.test1.com

this is 192.168.179.150:80

 

 

相关标签: Nginx