详述Linux系统中Nginx虚拟主机的配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详述Linux系统中Nginx虚拟主机的配置相关的知识,希望对你有一定的参考价值。

nginx虚拟主机应用

Nginx支持的虚拟主机有三种

  • 基于域名的虚拟主机.
  • 基于IP的虚拟主机
  • 基于端口的虚拟主机

通过"server{}"配置段实现

  • 本篇实验接着上一篇搭建Nginx服务继续搭建,前面Nginx的编译安装不在介绍

    基于域名的虚拟主机

    [root@localhost nginx-1.12.2]# mkdir -p /var/www/html/accp   //递归创建accp网页站点目录
    [root@localhost nginx-1.12.2]# mkdir -p /var/www/html/kgc     //递归创建kgc网页站点目录
    [root@localhost nginx-1.12.2]# cd /var/www/html/      //进入站点目录
    [root@localhost html]# ls           //查看
    accp  kgc
    [root@localhost html]# echo "this is kgc web" > kgc/index.html    //创建站点文件
    [root@localhost html]# echo "this is accp web" > accp/index.html  //创建站点文件
    [root@localhost html]# ls accp/   //查看accp站点目录
    index.html
    [root@localhost html]# ls kgc/   //查看kgc站点目录
    index.html
    [root@localhost conf]# vim /etc/named.rfc1912.zones     //编辑DNS服务区域配置文件
    ...//省略部分内容...
    zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
    };      
    zone "accp.com" IN {
        type master;
        file "accp.com.zone";                //添加accp网页域名解析
        allow-update { none; };
    };
    ...//省略部分内容...
    :wq
    [root@localhost conf]# cd /var/named/
    [root@localhost named]# cp -p named.localhost kgc.com.zone    //复制区域数据文件
    [root@localhost named]# vim kgc.com.zone              //编辑kgc区域数据文件
    $TTL 1D
    @       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
    www IN  A       192.168.144.133
    :wq
    [root@localhost named]# cp -p kgc.com.zone accp.com.zone     
    //复制kgc区域数据文件保持权限不变,复制为accp区域数据文件
    [root@localhost named]# systemctl restart named          //重启DNS服务
    [root@localhost init.d]# cd /usr/local/nginx/conf/      
    [root@localhost conf]# vim nginx.conf               //编辑Nginx主配置文件
    ...//省略部分内容...
    server {
        listen       80; 
        server_name  www.kgc.com;         //设置kgc域名访问条目
        charset utf-8;                   //更改字符串类型
        access_log  logs/www.kgc.com.access.log;    //更改日志文件名称
        location / { 
            root   /var/www/html/kgc;           //更改站点位置
            index  index.html index.htm;
        }   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   
    }   
    server {
        listen       80; 
        server_name  www.accp.com;
        charset utf-8;
        access_log  logs/www.accp.com.access.log;
        location / { 
            root   /var/www/html/accp;
            index  index.html index.htm;
        }   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   
    }   
    ...//省略部分内容...
    :wq
    [root@localhost conf]# nginx -t    //检测语法
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@localhost conf]# service nginx restart     //重启服务
    [root@localhost conf]# systemctl restart named   //重启DNS服务
  • 在客户机中测试网页

技术图片技术图片

基于端口的虚拟主机

[root@localhost conf]# vim nginx.conf    //编辑Nginx主配置文件
...//省略部分内容...
#    server {
#        listen       80;
#        server_name  www.kgc.com;
#        charset utf-8;
#        access_log  logs/www.kgc.com.access.log;
#        location / {
#            root   /var/www/html/kgc;             //注释掉此部分内容
#            index  index.html index.htm;
#        }
#        error_page   500 502 503 504  /50x.html;
#        location = /50x.html {
#            root   html;
#        }
#    }

  server {
        listen       192.168.144.133:80;          //端口条目钱添加IP地址
        server_name  www.accp.com;
        charset utf-8;
        access_log  logs/www.accp.com.access.log;
        location / {
            root   /var/www/html/accp;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {                                         //复制上面部分的内容
        listen       192.168.144.133:8080;           //设置相同IP监听不同端口 
        server_name  www.accp.com;
        charset utf-8;
        access_log  logs/www.accp8080.com.access.log;    //更改日志文件名称
        location / {
            root   /var/www/html/accp8080;         //整改站点文件目录名称
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
...//省略部分内容...
:wq          
[root@localhost conf]# cd /var/www/html/      //进入站点目录
[root@localhost html]# mkdir accp8080           //创建目录
[root@localhost html]# echo "this is accp8080 web" > accp8080/index.html   //编辑网页内容
[root@localhost html]# cd /usr/local/nginx/conf/    
[root@localhost conf]# nginx -t             //检测语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# service nginx restart   //重启服务
[root@localhost conf]# netstat -ntap | grep 80     //查看端口
tcp        0      0 192.168.144.133:8080    0.0.0.0:*            LISTEN      11967/nginx: master 
tcp        0      0 192.168.144.133:80      0.0.0.0:*            LISTEN      11967/nginx:
  • 在客户机中访问测试

技术图片技术图片

基于不同IP的虚拟主机

  • 首先给Linux虚拟机添加网卡

技术图片

[root@localhost conf]# ifconfig     //查看新添加的网卡信息,并记录IP地址
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.144.133  netmask 255.255.255.0  broadcast 192.168.144.255
        inet6 fe80::a85a:c203:e2e:3f3c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5b:d3:a0  txqueuelen 1000  (Ethernet)
        RX packets 67362  bytes 72060261 (68.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16836  bytes 1825469 (1.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.144.145  netmask 255.255.255.0  broadcast 192.168.144.255
        inet6 fe80::deb1:3cec:3e26:5ec2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5b:d3:aa  txqueuelen 1000  (Ethernet)
        RX packets 6  bytes 926 (926.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27  bytes 4513 (4.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost conf]# vim /var/named/kgc.com.zon       //更改DNS区域数据文件中kgc网页解析的IP地址
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       192.168.144.145      //更改为新添加网卡的IP地址
:wq
[root@localhost conf]# vim nginx.conf    //编辑主配置文件
...//省略部分内容...
 server {
        listen       192.168.144.145:80;       //去掉上面配置基于端口时全面添加的注释,并添加监听的IP地址
        server_name  www.kgc.com;
        charset utf-8;
        access_log  logs/www.kgc.com.access.log;
        location / { 
            root   /var/www/html/kgc;
            index  index.html index.htm;
        }   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   
    }   

    server {
        listen       192.168.144.133:80;
        server_name  www.accp.com;
        charset utf-8; 
        access_log  logs/www.accp.com.access.log;            //保持不变
        location / { 
            root   /var/www/html/accp;
            index  index.html index.htm;
        }   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }   
    } 

#    server {
#        listen       192.168.144.133:8080;
#        server_name  www.accp.com;
#        charset utf-8;
#        access_log  logs/www.accp8080.com.access.log;          //注释掉此部分内容
#        location / {
#            root   /var/www/html/accp8080;
#            index  index.html index.htm;
#        }
#        error_page   500 502 503 504  /50x.html;
#        location = /50x.html {
#            root   html;
#        }
#    }
...//省略部分内容...
:wq
[root@localhost conf]# nginx -t          //检测语法 
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# service nginx restart    //重启服务
[root@localhost conf]# systemctl restart named   //重启DNS服务
  • 在客户机中访问测试(此处建议新开启一台客户机做访问测试)

技术图片

以上是关于详述Linux系统中Nginx虚拟主机的配置的主要内容,如果未能解决你的问题,请参考以下文章

详述Linux系统中搭建Nginx动静分离

详述Linux系统中搭建LNMP架构+Discuz论坛

详述Linux系统中Apache网页与安全优化

nginx - ubutun下安装nginx(详述编译方法)

详述Linux系统中Apache网页与安全优化

阿里云Linux系统Nginx配置多个域名的方法