• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    nginx配置虚拟主机的详细步骤
    POST TIME:2021-10-16 16:13

    虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

    利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。

    配置虚拟主机有三种方法:

    方式一:多网卡多IP

    两个物理网卡,两个IP

    # 两张物理网卡ens32和ens34
    [root@nginx network-scripts]# ifconfig ens32 | awk 'NR==2 {print $2}'  
    192.168.126.41
    
    [root@nginx network-scripts]# ifconfig ens34 | awk 'NR==2 {print $2}'  
    192.168.126.42

    编辑配置文件,基于每个IP创建一个虚拟主机

    # 为防止 /etc/nginx/conf.d/default.conf 配置文件影响,对其进行重命名
    [root@nginx ~]# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default	 
    
    [root@nginx ~]# vim /etc/nginx/conf.d/ip.conf
    # ens32网卡对应的虚拟主机
    server {
      listen 192.168.126.41:80;
    
      location / {
        root /ip_ens32;
        index index.html;
      }
    }
    
    # ens34 网卡对应的虚拟主机
    server {
      listen 192.168.126.42:80;
    
      location / {
        root /ip_ens34;
        index index.html;
      }
    }

    创建虚拟主机的网页文件目录及文件

    [root@nginx ~]# mkdir /ip_ens32
    [root@nginx ~]# mkdir /ip_ens34
    
    [root@nginx ~]# echo "ens32" > /ip_ens32/index.html
    [root@nginx ~]# echo "ens34" > /ip_ens34/index.html

    检查配置文件的语法

    [root@nginx ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    重载nginx服务

    [root@nginx ~]# systemctl reload nginx

    测试

    [root@nginx ~]# curl 192.168.126.41
    ens32
    [root@nginx ~]# curl 192.168.126.42
    ens34

    方式二:单网卡多IP

    为一个物理网卡配置多个ip

    ip addr add IP/MASK dev 网卡名
    
    # 删除
    ip addr del IP/MASK dev 网卡名

    其余步骤同上面多网卡多IP的配置

    基于端口


    多使用于公司内部,无法使用域名或没有域名时

    配置

    [root@nginx ~]# vim /etc/nginx/conf.d/port.conf
    server {
      listen 81;
    
      location / {
        root /port_81;
        index index.html;
      }
    }
    
    server {
      listen 82;
    
      location / {
        root /port_82;
        index index.html;
      }
    }
    
    [root@nginx ~]# mkdir /port_{81..82}
    [root@nginx ~]# echo "81" > /port_81/index.html
    [root@nginx ~]# echo "82" > /port_82/index.html
    
    [root@nginx ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@nginx ~]# systemctl reload nginx

    测试

    [root@nginx ~]# curl 192.168.126.41:81
    81
    [root@nginx ~]# curl 192.168.126.41:82
    82

    基于域名

    配置

    一般一个域名对应一个配置文件,便于管理

    [root@nginx ~]# vim /etc/nginx/conf.d/test1.dxk.com.conf
    server {
      listen 80;
      server_name test1.dxk.com;
    
      location / {
        root /test1;
        index index.html;
      }
    }
    
    [root@nginx ~]# vim /etc/nginx/conf.d/test2.dxk.com.conf
    server {
      listen 80;
      server_name test2.dxk.com;
    
      location / {
        root /test2;
        index index.html;
      }
    }
    
    [root@nginx ~]# mkdir /test{1..2}
    [root@nginx ~]# echo "test1" > /test1/index.html
    [root@nginx ~]# echo "test2" > /test2/index.html
    
    [root@nginx ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    [root@nginx ~]# systemctl reload nginx

    测试

    # 配置域名解析
    [root@nginx ~]# echo -e "192.168.126.41 test1.dxk.com\n192.168.126.41 test2.dxk.com" >> /etc/hosts
    [root@nginx ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.126.41 test1.dxk.com
    192.168.126.41 test2.dxk.com
    
    [root@nginx ~]# curl test1.dxk.com
    test1
    [root@nginx ~]# curl test2.dxk.com
    test2



    这里有个问题:

    如果在配置域名解析时由于写错了,那么访问该错误域名(未配置该错误域名的虚拟主机)时竟然还会返回网页内容。

    [root@nginx ~]# vim /etc/hosts
    192.168.126.41 test1.dxk.com
    192.168.126.41 test3.dxk.com   # 这里本应该是 test2.dxk.com ,但是由于写错了,而且对应test3.dxk.com域名的虚拟主机并不存在

    访问该错误域名

    [root@nginx ~]# curl test3.dxk.com
    test1
    
    # 可以看到,还是会返回网页信息

    因为在配置域名解析时,虽然域名写错了,但是IP是对的,那么此时服务端默认会返回满足是该IP且端口为80的排在第一个的虚拟主机的网页信息给客户端

    [root@nginx ~]# ll /etc/nginx/conf.d/
    -rw-r--r--. 1 root root  112 Jul  3 21:23 test1.dxk.com.conf
    -rw-r--r--. 1 root root  112 Jul  3 21:22 test2.dxk.com.conf

    这是需要注意的

    到此这篇关于nginx虚拟主机的文章就介绍到这了,更多相关nginx虚拟主机内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:Docker部署rabbitmq遇到的两个问题
    下一篇:docker 基于golang镜像构建 ssh服务的方法
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信