在Nginx中部署基于IP的虚拟主机

一、虚拟主机概念

虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能、数据存放和传输功能。所谓虚拟主机,也叫“网站空间”, 就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟主机都具有独立的域名和完整的Internet服务器(支持WWW、FTP、 E-mail等)功能,从用户角度来看,每台虚拟主机和一台独立的服务器完全相同,在IP地址日益紧张的今天,基于域名的虚拟主机要比基于IP的虚拟主机 使用的更加广泛。

二、系统环境

系统平台:RHEL 5.4

Nginx版本:nginx-1.0.15

三、配置基于IP的虚拟主机

Linux、FreeBSD操作系统都允许添加IP别名。IP别名即:可以在一块物理网卡上绑定多个IP地址。这样就能够在使用单一网卡的同一个服务器上 运行多个基于IP的虚拟主机。设置IP别名也非常容易,只须配置系统上的网络接口,让它监听额外的lP地址。在Linux系统上,可以使用标准的网络配置 工具(比如ifconfig和route命令)添加IP别名。

1)、先用ifconfig命令查看该服务器的lP地址。

[[email protected] nginx]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:99:E4:21  
          inet addr:10.0.0.133  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::a00:27ff:fe99:e421/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7324 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2051 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:719461 (702.5 KiB)  TX bytes:308638 (301.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:765 errors:0 dropped:0 overruns:0 frame:0
          TX packets:765 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:48577 (47.4 KiB)  TX bytes:48577 (47.4 KiB)

[[email protected] nginx]#
2)、在eth0网卡设备上添加两个lP别名10.0.0.189和10.0.0.190,通过ifconfig和route命令来进行:

[[email protected] nginx]# ifconfig eth0:1 10.0.0.189 broadcast 10.255.255.255 netmask 255.0.0.0 up

[[email protected] nginx]# route add -host 10.0.0.189 dev eth0:1

[[email protected] nginx]# ifconfig eth0:2 10.0.0.190 broadcast 10.255.255.255 netmask 255.0.0.0 up

[[email protected] nginx]# route add -host 10.0.0.190 dev eth0:2

3)、再执行ifconfig命令,就可以看到eth0网卡设备上绑定了两个lP别名

[[email protected] nginx]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:99:E4:21  
          inet addr:10.0.0.133  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::a00:27ff:fe99:e421/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7490 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2151 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:735277 (718.0 KiB)  TX bytes:342506 (334.4 KiB)

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:99:E4:21  
          inet addr:10.0.0.189  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:2    Link encap:Ethernet  HWaddr 08:00:27:99:E4:21  
          inet addr:10.0.0.190  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:771 errors:0 dropped:0 overruns:0 frame:0
          TX packets:771 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:48897 (47.7 KiB)  TX bytes:48897 (47.7 KiB)

[[email protected] nginx]#

4)、
从另外一台服务器Ping
10.0.0.189和10.0.0.190两个IP,如果能够Ping通,则证明配置无误。但是,通过ifconfig和route配置的IP别名在服
务器重启后会消失,不过可以将这两条ifconng和route命令添加到/etc/rc.local文件中,让系统开机时自动运行,以下是相关命令:
vi /etc/rc.local

在文件末尾增加以下内容,然后保存即可

ifconfig eth0:1 10.0.0.189 broadcast 10.255.255.255 netmask 255.0.0.0 up

route add -host 10.0.0.189 dev eth0:1

ifconfig eth0:2 10.0.0.190 broadcast 10.255.255.255 netmask 255.0.0.0 up

route add -host 10.0.0.190 dev eth0:2

5)、下面开始配置基于IP的虚拟主机,在Nginx配置文件(nginx.conf)中,分别对10.0.0.133、10.0.0.189、10.0.0.190三个IP配置三个纯静态HTML支持的虚拟主机。

http {
    include       mime.types;
    default_type  application/octet-stream;

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;

#access_log  logs/access.log  main;

sendfile        on;
    #tcp_nopush     on;

keepalive_timeout  65;

#gzip  on;
    #第一个虚拟主机
    server {
        listen       10.0.0.133:80;               #监听的IP和端口
        server_name  10.0.0.133;              #主机名称

access_log  logs/host1.access.log  main;                #访问日志文件存放路径

location /
        {
            root /usr/local/nginx/html/host1;              #HTML网页文件存放的目录
            index  index.html index.htm;                    #默认首页文件,顺序从左到右,如果找不到index.html文件,则查找index.htm文件作为首页文件
        }
}
    #第二个虚拟主机
    server {
        listen       10.0.0.189:80;
        server_name  10.0.0.189;

access_log  logs/host2.access.log  main;

location /
        {
            root /usr/local/nginx/html/host2;
            index  index.html index.htm;
        }
}
    #第三个虚拟主机
    server {
        listen       10.0.0.190:80;
        server_name  10.0.0.190;

access_log  logs/host3.access.log  main;

location /
        {
            root /usr/local/nginx/html/host3;
            index  index.html index.htm;
        }
}

从上面的配置文件中可以看出,一段server{……}就是一个虚拟主机,如果要配置多个虚拟主机,建立多段server{……}配置即可,非常方便。监听的IP和端口也可以不写IP地址,只写端口,把它配置成"listen
80",则表示监听该服务器上所有IP的80端口,可通过server_name区分不同 的虚拟主机。

四、测试

1)、用脚本重启nginx。

[[email protected] conf]# service nginx restart

2)、在/usr/local/nginx/html/下分别建立三个目录host1,host2,host3。分别在三个目录中放一个index.html 文件,分别写上自己的IP地址;

3)、用浏览器访问相应IP地址。

分类: Linux Server

时间: 2024-10-28 21:15:57

在Nginx中部署基于IP的虚拟主机的相关文章

Nginx总结(二)基于ip的虚拟主机配置

前面讲了如何安装配置Nginx,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要说的是Nginx如何配置虚拟主机. 1. 什么是虚拟主机 虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的. 如下图: 通过nginx可以实现虚拟主机的

CentOS 7运维管理笔记(6)----Apache 基于 IP 的虚拟主机配置

Apache 配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置.本篇随笔记录自己基于IP的虚拟主机配置. 如果同一台服务器有多个IP,可以使用基于IP的虚拟主机配置,将不同的服务绑定在不同的IP上. (1)绑定IP: 在虚拟机中搭建的CentOS 7 服务器的IP被自己设置为了静态IP 192.168.1.210,现在使用ifconfig在同一个网络接口上绑定192.168.1.211~213这三个IP: ifconfig eth0:1 192.1

Apache配置基于IP的虚拟主机 Apache virtual host configuration is based on the IP

Step 1: 检查是否开启 httpd-vhosts.conf apache/conf/httpd.conf文件 # Virtual hosts Include conf/extra/httpd-vhosts.conf 如果没有开启,必须在httpd.conf文件中设置:如果开启,则可以在apache/conf/extra/httpd-vhosts.conf文件中设置,当然也还是可以再httpd.conf文件中进行设置,同样有效. Step 2: httpd.conf文件 DocumentRo

CentOS7.4—nginx应用之基于域名的虚拟主机

Nginx功能应用-虚拟主机目录:第一部分:准备工作第二部分:搭建nginx第三部分:搭建基于域名的虚拟主机 第一部分 准备工作一:服务器:Linux系统-CentOS 7.4:IP地址:192.168.80.10 客户端:以WIN7为例,测试验证结果,与服务器在同一网段:IP地址:192.168.80.2 二:准备压缩包 三:将防火墙与selinux关闭 第二部分 安装Nginx服务一:安装编译工具与插件[[email protected] ~]# yum -y install \ gcc \

Nginx(6)-配置基于域名的虚拟主机

配置基于域名解析的虚拟主机 1.准备站点 我们站点统一放到/www/vhosts/下,每个站点根目录名称都和域名相同,具体如下. 新建www.stu31.com的站点根目录 [[email protected] extra]# mkdir /www/vhosts/www.stu31.com 新建www网站的首页index.html [[email protected] extra]# echo "Welconf to www.stu31.com" > /www/vhosts/ww

nginx基于IP的虚拟主机配置

1.       增加IP 2.       [[email protected] ~]# ifconfigeth0:1 192.168.47.137 netmask 255.255.255.0 up 3.       [[email protected] ~]# ifconfigeth0:2 192.168.47.136 netmask 255.255.255.0 up 4.       [[email protected] ~]# ifconfigeth0:0 192.168.47.135

nginx基本域名 端口 IP 的虚拟主机

基于域名 ##nginx并发连接数 processes 乘 connection ## worker_processes 服务进程数,一般和cpu 核心一致即可 worker_processes 1; events { ##一个worker同时服务数量 worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout

练习----基于ip的虚拟主机设置

注意: 设置文件一般在/etc/httpd/conf.d目录下 1.vim   /etc/httpd/conf.d/vhost1.conf 创建vhost1.conf文件并输入下面内容 <VirtualHost 192.168.1.26:80>ServerName www1.magedu.comDocumentRoot /data/vhosts/www1</VirtualHost> 2.vim   /etc/httpd/conf.d/vhost2.conf 创建vhost2.con

Nginx配置之基于域名的虚拟主机

1.配置好DNS解析