Nginx 反向代理 负载均衡 虚拟主机配置

通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常用配置的说明。即学即用,你还在等什么?一睹为快先了解Nginx的三大功能

Nginx 可以作为一台http服务器。可以做网站静态服务器,比如图片服务器,高效,减轻服务器压力。同时它也支持https服务。

Nginx 可以配置多台虚拟主机。可以实现在一台服务器虚拟出多个网站效果,省钱。

Nginx 最重要的是反向代理,负载均衡。在服务器集群中,Nginx通过反向代理让性能高的服务器分担更多的负载,从而实现负载均衡的效果,利用率高。

效果图:包含基于ip的虚拟主机测试,基于域名的虚拟主机测试,反向代理和负载均衡的测试



环境:CentOS 7 , nginx-1.13.6 ,

说明:Nginx 反向代理和负载均衡的操作前提都是基于域名的虚拟主机。不同的tomcat模拟不同的服务器,和生产环境最大的区别就是ip和port

Nginx 安装:http://www.cnblogs.com/itdragon/p/7850985.html

Nginx http服务器:http://www.cnblogs.com/itdragon/p/7864916.html

配置多台虚拟主机

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

Nginx提供了三种虚拟主机配置方式,1、基于ip的虚拟主机,2、基于端口的虚拟主机,3、基于域名的虚拟主机。最常用的是第三种,相对于 ip地址和端口号,域名更方便记忆和使用。

基于ip的虚拟主机

[root@itdragon ~]# cd /etc/sysconfig/network-scripts/
[root@itdragon network-scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.225.131/24 brd 192.168.225.255 scope global dynamic ens33
[root@itdragon network-scripts]# vim ifcfg-ens33
# 添加
IPADDR1="192.168.225.132"
IPADDR2="192.168.225.133"
[root@itdragon network-scripts]# systemctl restart network
[root@itdragon network-scripts]# ip addr
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.225.131/24 brd 192.168.225.255 scope global dynamic ens33
inet 192.168.225.132/24 brd 192.168.225.255 scope global secondary ens33
inet 192.168.225.133/24 brd 192.168.225.255 scope global secondary ens33
[root@itdragon ~]# cd /usr/local/nginx
[root@itdragon nginx]# cp -r html/ html-131/
[root@itdragon nginx]# cp -r html/ html-132/
[root@itdragon nginx]# cp -r html/ html-133/
[root@itdragon nginx]# vim html-131/index.html
[root@itdragon nginx]# vim html-132/index.html
[root@itdragon nginx]# vim html-133/index.html
[root@itdragon nginx]# vim conf/nginx.conf
# 添加
server {
listen 80;
server_name 192.168.225.132;
location / {
root html-132;
index index.html index.htm;
}
}
server {
listen 80;
server_name 192.168.225.133;
location / {
root html-133;
index index.html index.htm;
}
}
[root@itdragon nginx]# sbin/nginx -s reload

第一步:执行命令ip addr 打印协议地址,得知网卡名是ens33,ip地址是192.168.225.131

第二步:进入到/etc/sysconfig/network-scripts/ 修改ifcfg-ens33 文件添加两个ip地址

第三步:重启网络,并检查配置是否生效,发现ens33对应三个ip地址

第四步:进入到/usr/local/nginx/ 目录下,拷贝三份html目录,并分别修改index.html 文件便于区分测试

第五步:修改Nginx配置文件,监听的端口不变,修改server_name为对应ip地址,修改root为对应的html目录

第六步:重启Nginx服务,在浏览器上分别访问三个ip地址,观察页面变化

若你发现不同的ip地址打印不同页面,和效果图相似,则代表配置成功。

基于端口的虚拟主机和基于ip的虚拟主机配置几乎一样,只是在修改Nginx配置文件时,只修改监听的端口和root对应的目录,其他的没有变。这里就不贴命令了。

基于域名的虚拟主机

这是Nginx比较常用的配置,也是有利于人类使用的配置方式。这里通过修改window系统下的host文件来模拟DNS服务器。

# Windows
C:\Windows\System32\drivers\etc\hosts文件
# nginx 域名配置虚拟主机
192.168.225.131 www.itdragon.com
192.168.225.131 picture.itdragon.com
192.168.225.131 search.itdragon.com # CentOS
[root@itdragon nginx]# cp -r html/ html-search
[root@itdragon nginx]# cp -r html/ html-picture
[root@itdragon nginx]# vim html-search/index.html
[root@itdragon nginx]# vim html-picture/index.html
[root@itdragon nginx]# vim conf/nginx.conf
server {
listen 80;
server_name search.itdragon.com;
location / {
root html-search;
index index.html index.htm;
}
}
server {
listen 80;
server_name picture.itdragon.com;
location / {
root html-picture;
index index.html index.htm;
}
}
[root@itdragon nginx]# sbin/nginx -s reload

第一步:在window环境中,修改host文件,添加ip 域名映射关系,用来模拟DNS服务器

第二步:进入到/usr/local/nginx/ 目录下,拷贝两份html目录,分别修改index.html 文件便于区分测试

第三步:修改Nginx配置文件,监听的端口不变,修改server_name为对应域名地址,修改root为对应的html目录

第四步:重启Nginx服务,在浏览器上分别访问两个域名地址,观察页面变化

若你发现不同的域名地址打印不同页面,和效果图相似,则代表配置成功。

Nginx 反向代理

在了解Nginx 反向代理之前,我们先熟悉一下什么是代理服务器

代理服务器:是一个夹在客户机和目标主机中间的服务器。能提高客户机访问响应速度,还能设置防火墙过滤不安全信息。

响应速度快:客户机发送请求,代理服务器接收请求后,再转发给目标主机。目标主机接收请求并将数据返回给代理服务器,代理服务器将数据返回给客户机同时也会保存数据到本地。若客户机下次有相同的请求,则直接从本地数据返回。从而提高了响应的速度。

设置防火墙:因为代理服务器夹在客户机和目标主机中间。客户机所有的请求都会经过代理服务器,所以如果在代理服务器上设置防火墙,则可以过滤一些不安全的信息,同时也方便管理。

清楚了代理服务器后,我们再来了解正向代理和反向代理的区别

正向代理:顾客:"服务员,我就要厨师A做的七彩红烧肉"; 服务员:"好嘞,我这就安排厨师A给您做!"

反向代理:顾客:"服务员,我要一份七彩红烧肉"; 服务员:"好嘞,我们的厨师B炒菜贼好吃!"

不知道大家看懂没有。顾客就是客户机,服务员就是代理服务器,厨师们就是目标主机。正向代理就相当于客户机明确指定目标主机提供服务(目标主机被动接收请求)。反向代理就相当于客户机提供需求,代理服务器从一群目标主机中找一台去实现该需求(目标主机主动接收请求)。

现在开始配置Nginx的反向代理

[root@itdragon ~]# vim /usr/local/solr/tomcat1/webapps/ROOT/index.jsp
[root@itdragon ~]# vim /usr/local/solr/tomcat2/webapps/ROOT/index.jsp
[root@itdragon ~]# cd /usr/local/nginx
[root@itdragon nginx]# vim conf/nginx.conf
upstream searchserver {
server 192.168.225.133:8081;
}
upstream pictureserver {
server 192.168.225.133:8082;
}
server {
listen 80;
server_name search.itdragon.com;
location / {
proxy_pass http://searchserver;
index index.html index.htm;
}
}
server {
listen 80;
server_name picture.itdragon.com;
location / {
proxy_pass http://pictureserver;
index index.html index.htm;
}
}
[root@itdragon nginx]# sbin/nginx -s reload

第一步:准备两个tomcat服务器,端口分别是8081和8082,并分别修改index.jsp 文件便于区分测试

第二步:进入到/usr/local/nginx/ 目录下,修改Nginx配置文件。upstream 定义每个设备的状态,server 配置服务,server_name 指定域名,proxy_pass 代理转发到那台设备上

第三步:重启服务,在浏览器上输入不同的域名,会跳到对应的页面

Nginx的反向代理其实是在做请求的转发,后台有多个http服务器提供服务,Nginx的功能就是把请求转发给后面的服务器,并决定把请求转发给哪台服务器。

反向代理流程

浏览器访问search.itdragon.com,通过本地host文件域名解析,找到192.168.225.131 Nginx虚拟主机,Nginx接收客户机请求,找到server_name为search.itdragon.com的节点,再根据proxy_pass对应的http路径,将请求转发到upstream searchserver上,即端口号为8081的tomcat服务器。

客户机访问 ---> search.itdragon.com ---> host ---> Nginx ---> server_name ---> proxy_pass ---> upstream---> tomcat

Nginx 负载均衡

负载均衡 在高性能的主机上分配更多的负载,在性能低的主机分配少一些的负载,充分利用主机的性能,将其服务器的总压力。Nginx的 upstream默认是以轮询的方式实现负载均衡,也可以分配权值。

[root@itdragon ~]# vim /usr/local/solr/tomcat3/webapps/ROOT/index.jsp
[root@itdragon ~]# vim /usr/local/solr/tomcat4/webapps/ROOT/index.jsp
[root@itdragon ~]# cd /usr/local/nginx
[root@itdragon nginx]# vim conf/nginx.conf
upstream pictureserver {
server 192.168.225.133:8082 weight=2;
server 192.168.225.133:8083 weight=1;
server 192.168.225.133:8084 weight=1;
}
[root@itdragon nginx]# sbin/nginx -s reload

第一步:新增两个tomcat服务器,端口分别为8083和8084,并分别修改index.jsp 文件便于区分测试

第二步:进入到/usr/local/nginx/ 目录下,修改Nginx配置文件,在pictureserver 内新增两个server

第三步:重启服务

负载均衡的配置是在反向代理的基础上修改的,所以请先完成反向代理的配置。

常用配置说明

events {										# 工作模式
worker_connections 1024; # 最大连接数
}
http { # 配置http服务器
include mime.types; # 定义mime的文件类型
default_type application/octet-stream; # 默认文件类型
sendfile on; # 开启 sendfile 函数(zero copy 方式)输出文件
keepalive_timeout 65; # 连接超时时间,单位秒 upstream pictureserver { # 定义负载均衡设备的ip和状态
server 192.168.225.133:8081 ; # 默认权重值为一
server 192.168.225.133:8082 weight=2; # 值越高,负载的权重越高
server 192.168.225.133:8083 down; # 当前server 暂时不参与负载
server 192.168.225.133:8084 backup; # 当其他非backup状态的server 不能正常工作时,才请求该server,简称热备
}
server { # 设定虚拟主机配置
listen 80; # 监听的端口
server_name picture.itdragon.com; # 监听的地址,多个域名用空格隔开
location / { # 默认请求 ,后面 "/" 表示开启反向代理,也可以是正则表达式
root html; # 监听地址的默认网站根目录位置
proxy_pass http://pictureserver; # 代理转发
index index.html index.htm; # 欢迎页面
deny 127.0.0.1; # 拒绝的ip
allow 192.168.225.133; # 允许的ip
}
error_page 500 502 503 504 /50x.html;# 定义错误提示页面
location = /50x.html { # 配置错误提示页面
root html;
}
}

具体配置详情可以参考:http://blog.csdn.net/happydream_c/article/details/54943802

总结

1 Nginx 通过修改nginx.conf server_name配置,达到配置多台基于ip,基于域名的虚拟主机

2 Nginx 通过修改nginx.conf upstream 和 proxy_pass配置,达到反向代理效果

3 Nginx 通过修改nginx.conf upstream server 状态,达到负载均衡效果

4 代理服务器有提高客户端获取数据的速度,和方便管理设置防火墙的功能

到这里Nginx的多虚拟主机,反向代理和负载均衡就结束了,感谢阅读!欢迎点赞!

Nginx 反向代理 负载均衡 虚拟主机的更多相关文章

  1. Nginx 反向代理 负载均衡 虚拟主机配置

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  2. 【转】Nginx 反向代理 负载均衡 虚拟主机配置

    原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...

  3. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

  4. Centos7.4 Nginx反向代理+负载均衡配置

    Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...

  5. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  6. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  7. 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现

    总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...

  8. 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现

    目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...

  9. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

随机推荐

  1. rocketmq延时消息

    rocketmq提供一种延时消息的解决方案,就是在特定的时间到了,消息才会被投递出去供consumer消费. 总体来是简单的场景是满足了,但是需要注意的是延时的时间是需要按照默认配置的延时级别去配置的 ...

  2. 彻底卸载注册表、流氓软件的工具Uninstall Tool

    Your Uninstaller 和Uninstall Tool都可以卸载Windows系统卸载不干净的软件和注册表驱动等 Uninstall Tool下载

  3. Codeception 实战

    Codeception 测试 Php 代码 一.一句话概述 使用 cc 进行单元测试,保证现有代码质量,为以后维护与重构提供支撑. 二.目标 安装配置 cc 编写测试代码,简化开发与最大化稳定性和可维 ...

  4. ztree 获取子节点所有父节点的name的拼接

    ztree 获取子节点所有父节点的name的拼接 //获取子节点,所有父节点的name的拼接字符串function getFilePath(treeObj){if(treeObj==null)retu ...

  5. 你所不知道的ASP.NET Core MVC/WebApi基础系列(一)

    前言 最近发表的EF Core貌似有点多,可别误以为我只专攻EF Core哦,私下有时间也是一直在看ASP.NET Core的内容,所以后续会穿插讲EF Core和ASP.NET Core,别认为你会 ...

  6. [references] How to Do Research

    目录: ** 0x01 做研究/写论文的Alpha/Beta ** 0x02 How to Do Research | 经典指南 ** 0x03 思考写作与研究的区别 | The difference ...

  7. .netcore2.0发送邮件

    SmtpClient smtpClient = new SmtpClient(); smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指 ...

  8. ansible 模块

    1. #vim /etc/ansible/yaml/back.yml - hosts: siyi tasks: - name: "yum rsync" yum: name=rsyn ...

  9. sql是最成功的第四代语言

    SQL发展的前世今生 很多年前,两名年轻的IBM研究员将一门关系型语言带到了数据库领域,旨在使用声明性的方式来操作数据.从Don Chamberlin和Ramond Boyce发表"SEQU ...

  10. Centos6.5-DHCPServer安装

    1.查询dhcp有没有被安装,如下没有被安装 [zfp@localhost ~]$ rpm -q dhcppackage dhcp is not installed[zfp@localhost ~]$ ...