Nginx极简入门(二)配置基于ip的虚拟主机-阿里云开发者社区

开发者社区> 章为忠学架构> 正文

Nginx极简入门(二)配置基于ip的虚拟主机

简介: 前面讲了如何安装和配置Nginx,今天要说的是Nginx如何配置虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章里面很多其他的配置,可能前面的文章已经说讲过,然后后续就没有在介绍,如果出现有些配置没有讲,大家可能需要去看看前面的文章。
+关注继续查看

前面讲了如何安装和配置Nginx,今天要说的是Nginx如何配置虚拟主机。

需要说明的是:由于本文章是nginx系列文章中的一篇,文章里面很多其他的配置,可能前面的文章已经说讲过,然后后续就没有在介绍,如果出现有些配置没有讲,大家可能需要去看看前面的文章。

 

一. 什么是虚拟主机

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。

如下图:

image.png

通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置:

1、基于ip的虚拟主机

2、基于域名的虚拟主机

3、基于端口的虚拟主机

实际使用的过程中,我们一般常用的是用域名或是端口来区分web服务。只不过我这里为了讲的全面一点,会把三种配置都讲一讲。 

 

二. Nginx配置文件的结构

要真正学会Nginx,就必须熟悉Nginx配置文件的结构。下面先介绍Nginx的配置文件结构。主要结构如下:

......
events {
    .......
}
http{
   .......
   server{
         .......
         }
   server{
         .......
         }
}

上面的示例中,每个server就是一个虚拟主机。就代表着一个路由转发的地址。

 

三. 基于ip的虚拟主机配置

Linux操作系统允许添加IP别名,就是在一块物理网卡上绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。

应用场景

一台nginx服务器绑定两个ip:192.168.78.132、192.168.78.133,访问不同的ip请求不同的html目录,即:

访问http://192.168.78.132将访问html132目录下的html网页

访问http://192.168.78.133将访问html133目录下的html网页

 

i. 准备环境

首先,创建192.168.78.132 的虚拟机;然后,保证本地电脑和虚拟网络通畅。

在虚拟服务器192.168.78.132上安装Nginx。这个之前讲过Nginx 的源码安装,大家可以去看看之前的文章,这里就不重复了。

 

ii. 绑定多ip

1、修改网络配置文件,进入到/etc/sysconfig/network-scripts,编辑ifcfg-ens33文件如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# BOOTPROTO=dhcp 注意区别!!!
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=26c2f3f8-62c5-4571-80e2-ca394cfd43da
DEVICE=ens33
ONBOOT=yes
ZONE=public
# 注意区别
IPADDR0=192.168.78.132
PREFIX0=24
IPADDR1=192.168.78.133
PREFIX1=16

 这里使用一个虚拟主机,2个IP来模拟两个虚拟主机的情况。IP地址分别为192.168.78.132和192.168.78.133


2、保存修改,重启网络,使用如下: systemctl restart network

[root@bogon network-scripts]# systemctl restart network

这个是linux的基本命令,大家参照网上的资料,不明白的可以去这里看看具体如何操作。



iii. 创建两个web网站

进入/usr/local/nginx 目录,将原来nginx的html目录拷贝两个目录 “html132”和“html133”,为了方便测试需要修改每个目录下的index.html内容使之个性化。

cd /usr/local/nginx
cp -r html html132
cp -r html html133

 这里创建了两个网站目录,分别为:html132、和html133。


iv. 配置虚拟主机

修改/usr/local/nginx/conf/nginx.conf文件,添加两个虚拟主机,如下:

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    sendfile        on;
    keepalive_timeout  65;
    #配置虚拟主机192.168.78.132
    server {
        #监听的ip和端口,配置192.168.78.132:80
        listen       80;
        #虚拟主机名称这里配置ip地址
        server_name  192.168.78.132;
        #所有的请求都以/开始,所有的请求都可以匹配此location
        location / {
             #使用root指令指定虚拟主机目录即网页存放目录
             #比如访问http://ip/test.html将找到/usr/local/html3/test.html
             #比如访问http://ip/item/test.html将找到/usr/local/html3/item/test.html
             root   /usr/local/nginx/html132;
             #指定欢迎页面,按从左到右顺序查找
             index  index.html index.htm;
        }
    }
    #配置虚拟主机192.168.78.133
    server {
        listen       80;
        server_name  192.168.78.133;
        location / {
            root   /usr/local/nginx/html133;
            index  index.html index.htm;
        }
    }
}

上面我们在Nginx配置文件中,创建了2个虚拟主机,分别指向html132和html133网站。 


四. 验证测试

重新启动nginx,然后分别访问两个Nginx虚拟主机。

访问http://12.168.78.132/

image.png

访问http://192.168.78.133/

image.png

以上,我们可以看到通过IP地址,我们成功访问到了我们对应的网站。说明基于IP的虚拟主机配置成功。

 

最后

以上,就把nginx 基于ip的配置虚拟主机讲完了。后面会继续讲基于域名和端口的配置。


这是系列课程,大家关注我的微信公众号(架构师精进),随时交流。




推荐阅读:

Nginx极简入门(一)如何在Linux系统编译安装Nginx服务

SpringBoot从入门到精通(二十八) JPA 的实体映射关系,轻松一对一,一对多,多对多关系映射!

SpringBoot从入门到精通(二十七)使用Spring Data JPA 自定义查询如此简单,完全不需要写SQL!

Nginx极简实战—如何实现Nginx负载均衡高可用


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Apache 单IP配置多个HTTPS虚拟主机
Apache 文档中提到,不能在单个 IP上同时有多个按名字识别的虚拟主机("named virtual host"),其实不完全是这样了。 使用SNI SNI全称Server Name Indication(服务器名称指示),这个问题可以解决apache中的单IP多HTTPS虚拟主机,只有默认第一个站点的SSL生效的问题。但是这些技术需要浏览器的版本支持
243 0
Nginx配置之基于域名的虚拟主机
1、配置好DNS解析 [root@server ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.2 (Santiago) [root@server ~]# uname -r 2.6.32-220.el6.i686 [root@server ~]# yum install bind* -y
1216 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3972 0
Nginx极简入门(二)配置基于ip的虚拟主机
前面讲了如何安装和配置Nginx,今天要说的是Nginx如何配置虚拟主机。 需要说明的是:由于本文章是nginx系列文章中的一篇,文章里面很多其他的配置,可能前面的文章已经说讲过,然后后续就没有在介绍,如果出现有些配置没有讲,大家可能需要去看看前面的文章。
143 0
【Nginx】nginx虚拟机设置
一般情况下,我们的一台机器都不会仅仅部署一个项目,那么这个时候需要我们设置虚拟机来映射多个地址的解析。 假设我们目前有一个已经设置好的nginx服务器,通过php-fpm提供服务。
667 0
+关注
章为忠学架构
获取源码、资料,请关注我的微信公众号(架构师精进)
67
文章
2
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载