通过本章你将学会利用 Nginx 配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用 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
HTTP图片服务器
效果图
需求:
实现图片的上传和批量上传
技术:
Nginx,Vsftpd,Spring全家桶,KindEditor,CentOS
说明:
本章节内容主要是实现图片的上传功能。使用 KindEditer 是为了更好的演示图片的上传,回显,批量效果。
源码:
场景:
用户将图片上传到 tomcat 服务器上,再由 tomcat 服务器通过 FTP 上传到 Nginx 服务器。
http://www.cnblogs.com/itdragon/p/7864916.html
配置多台虚拟主机
虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机都可以独立对外提供 www 服务。从而实现一台主机能对外提供多个 web 服务,而且每个虚拟主机之间是互不影响的。
Nginx 提供了三种虚拟主机配置方式,
1、基于ip的虚拟主机,
2、基于端口的虚拟主机,
3、基于域名的虚拟主机。
基于IP的虚拟主机
第一步:
第二步:
第三步:
第四步:
进入到 /usr/local/nginx/ 目录下,拷贝三份 html 目录,并分别修改 index.html 文件便于区分测试
第五步:
第六步:
(基于端口的虚拟主机和基于ip的虚拟主机配置几乎一样,只是在修改Nginx配置文件时,只修改监听的端口和root对应的目录,其他的没有变。这里就不贴命令了)
基于域名的虚拟主机
这是 Nginx 比较常用的配置,也是有利于人类使用的配置方式。这里通过修改 window 系统下的 host 文件来模拟 DNS 服务器。
第一步:
在 window 环境中,修改 host 文件,添加 ip 域名映射关系,用来模拟 DNS 服务器
第二步:
进入到 /usr/local/nginx/ 目录下,拷贝两份 html 目录,分别修改 index.html 文件便于区分测试
第三步:
第四步:
反向代理
在了解 Nginx 反向代理之前,我们先熟悉一下什么是代理服务器
代理服务器:是一个夹在客户机和目标主机中间的服务器。能提高客户机访问响应速度,还能设置防火墙过滤不安全信息。
响应速度快:客户机发送请求,代理服务器接收请求后,再转发给目标主机。目标主机接收请求并将数据返回给代理服务器,代理服务器将数据返回给客户机同时也会保存数据到本地。若客户机下次有相同的请求,则直接从本地数据返回。从而提高了响应的速度。
设置防火墙:因为代理服务器夹在客户机和目标主机中间。客户机所有的请求都会经过代理服务器,所以如果在代理服务器上设置防火墙,则可以过滤一些不安全的信息,同时也方便管理。
清楚了代理服务器后,我们再来了解正向代理和反向代理的区别
正向代理:顾客:"服务员,我就要厨师A做的七彩红烧肉"; 服务员:"好嘞,我这就安排厨师A给您做!"
反向代理:顾客:"服务员,我要一份七彩红烧肉"; 服务员:"好嘞,我们的厨师B炒菜贼好吃!"
顾客就是客户机,服务员就是代理服务器,厨师们就是目标主机。正向代理就相当于客户机明确指定目标主机提供服务(目标主机被动接收请求)。反向代理就相当于客户机提供需求,代理服务器从一群目标主机中找一台去实现该需求(目标主机主动接收请求)。
现在开始配置Nginx的反向代理
第一步:
准备两个 tomcat 服务器,端口分别是 8081 和 8082,并分别修改 index 文件便于区分测试
第二步:
进入到 /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 的 upstream 默认是以轮询的方式实现负载均衡,也可以分配权值。
第一步:
新增两个 tomcat 服务器,端口分别为 8083 和 8084,并分别修改 index 文件便于区分测试
第二步:
进入到 /usr/local/nginx/ 目录下,修改 Nginx 配置文件,在 pictureserver 内新增两个 server。重启服务。
负载均衡的配置是在反向代理的基础上修改的,所以请先完成反向代理的配置。
Nginx 总结
常见配置说明
1 Nginx 通过修改nginx.conf server_name配置,达到配置多台基于ip,基于域名的虚拟主机
2 Nginx 通过修改nginx.conf upstream 和 proxy_pass配置,达到反向代理效果
3 Nginx 通过修改nginx.conf upstream server 状态,达到负载均衡效果
4 代理服务器有提高客户端获取数据的速度,和方便管理设置防火墙的功能
学英语会编程|ITDragon博客