设为首页 收藏本站
查看: 843|回复: 0

[经验分享] Nginx:虚拟主机配置

[复制链接]

尚未签到

发表于 2018-11-11 06:01:33 | 显示全部楼层 |阅读模式
  继续我的Nginx学习之旅,今天谈谈虚拟主机的配置。那何为虚拟主机呢?虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Internet服务器功能,同一台主机上的虚拟主机之间是完全独立的。利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器,同一组Nginx进程上运行多个网站的功能。跟Apache一样,Nginx也可以配置多种类型的虚拟主机,一是基于IP的虚拟主机,二是基于域名的虚拟主机,三是基于端口的虚拟主机。
  (一)配置基于IP的虚拟主机
  Linux操作系统准许添加IP别名,即可以在一块物理网卡上绑定多个IP地址。这样就能够在使用单一网卡的同一服务器上运行多个基于IP的虚拟主机。设置IP别名也非常简单,只需配置系统上的网卡接口,让它监听额外的IP地址。在Linux系统上可以使用标准的网络配置工具(比如ifconfig和route命令)添加IP别名。使用ifconfig命令查看该服务器的IP地址。
  本地回环代表设备的虚拟接口,所以默认被看作是永远不会宕掉的接口,它的主要作用有两个:一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题;二是某些SERVER/CLIENT的应用程序在运行时须调用服务器上的资源,一般要指定SERVER的IP地址,但当该程序要在同一台机器上运行且没有别的SERVER时,就可以把SERVER的资源装在本机上,SERVER的IP地址设为127.0.0.1也同样可以运行。
  如果要在eth0网卡设备上添加一个IP别名192.168.1.223可以通过ifconfig和route命令来进行:
ifconfig eth0:0 192.168.1.223 broadcast 192.168.1.255 netmask 255.255.255.0 up  或者
route add -host 192.168.1.223 dev eth0:0  eth0:0表示eth0网卡的第1个虚拟ip,当然也可以开第二个第三个,依次为eth0:1,eth0:2
  broadcast后面跟的是广播地址
  netmask后面跟的是子网掩码
  up表示激活
  dev后面表示的设备名
  如果上面指令不成功,看看是不是权限问题,切换到root下试试
  通过ifconfig和route配置的IP别名在服务器重启后会消失,可以将这两条ifconfigt 和 route 命令添加到/etc/rc.local文件中,让系统开机时自动运行
  /sbin/ifconfig eth0:0 192.168.1.223 broadcast 192.168.1.255 netmask 255.255.255.0 up
  或者
  /sbin/route add -host 192.168.1.223 dev eth0:0
  为什么是/sbin/ifconfig。因为这些命令的可执行文件在/sbin目录下,可以用whereis命令查看。
  清除虚拟IP可用以下命令:
ifconfig eth0:x down  x表示虚拟网络的接口。
  或者
ip addr del v_ip dev eth0  v_ip表示所创建的虚拟IP
  建设已经创建了两个虚拟ip,分别为192.168.8.16,192.168.8.18,下面看看如何配置这两个虚拟IP
http {  
include       mime.types;
  
default_type  application/octet-stream;
  
keepalive_timeout  65;
  
access_log  log/server1.access.log combined;
  
    server {
  
            listen   192.168.8.16:80;   #监听的IP和端口
  
            server_name  192.168.8.16;  #主机名称
  

  
            location / {
  

  
                index  index.html index.htm;
  
                root /data0/hrdocs/server1;
  
            }
  
     }
  

  
     server {
  
        listen   192.168.8.18:80;
  
        server_name  192.168.8.18;
  

  
        location / {
  

  
            index  index.html index.htm;
  
            root /data0/hrdocs/server1;
  
     }
  
}
  一个Server{....} 就是一个虚拟主机,如果本配置多个虚拟主机,建立多段server{}配置即可非常方便,监听的IP和端口,也可以不写IP地址,只写端口,把它配置成“listen 80”,则表示监听该服务器上所有IP的80端口可通过server_name区分不同的虚拟主机
  (二)基于域名的虚拟主机
  基于域名的虚拟主机是最常见的一种虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的lP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。这种虚拟主机技术,使很多虚拟主机可以共享同一个lP地址,有效解决了lP地址不足的问题。所以,如果没有特殊要求使你必须用一个基于lP的虚拟主机,最好还是使用基于域名的虚拟主机。
  我们可以通过编辑/etc/hosts加入虚拟域名以便解析,来测试一下。在hosts文件中加入
  127.0.0.2    www.test.com
  如下图:
DSC0000.png

  然后保存退出,执行如下命令,重启该文件的内容
source hosts  然后ping命令做一下小测试,看127.0.0.2通不通
DSC0001.png

  从结果上来看,ping 127.0.0.2 和www.test.com 都是通的。接下来配置Nginx。配置如下:
server {  
    listen      80;
  
    server_name www.test.com;
  
    location / {
  
      root /home/liulonghua/下载/conFusion;
  
      index index.html;#当然如果你有更好的模板HTML文件,也可以换的,改下root路径就行
  
    }
  
}
  然后保存退出,用nginx -t 测试配置是否有误,无误的话执行下面命令重启Nginx
service nginx restart  然后打开浏览器,输入网站www.test.com。下图是我的测试结果
DSC0002.png

  这里只是举了一个简单的例子,实际生产肯定比这个要复杂。
  (三)基于端口的虚拟主机配置
  使用端口来区分,浏览器使用域名或ip地址:端口号
  看下面的配置:
server{  
        listen   8080;
  
        server_name www.test.com;
  
        location / {
  
        root /home/liulonghua/下载/conFusion;
  
        index index.html;
  
}
  
}
  
        server{
  
        listen 9090;
  
        server_name 127.0.0.1;
  
        location / {
  
        root /usr/share/nginx/html;
  
        index index.html;
  
}
  
}
  这个时候通过浏览器访问www.test.com或者127.0.0.1网页是打不开的,必须要加上端口后才行,有兴趣的可以自己动手试下。
  参考资料:《实战Nginx》



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633372-1-1.html 上篇帖子: nginx 自定义403页面 下篇帖子: Nginx缓存技术之fastcgi_cache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表