反向代理--Nginx
反向代理机制
反向代理说明
1).反向代理服务器位于目标服务器与用户之间.
2).对于用户而言,反向代理服务器就是目标服务器.
3).用户访问时根本不清楚真实的服务器资源是谁,保护了真实服务器资源信息.
4).反向代理服务器一般是服务器端代理,保护真实服务器信息.
正向代理(知识补充)
).代理服务器位于用户与服务器之间
2).用户发起请求时,清楚的知道自己访问的真实服务器是谁.
3).代理服务器将用户的请求转交给服务器获取数据.
4).正向代理是客户端代理,保护了用户的信息.
Nginx
1 Nginx介绍
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
内存: 不到2M
并发能力强: 3-5万次/秒 理想环境下 /tomcat服务器 150-220/秒
2 Nginx安装
0).Nginx安装路径不要放到C盘 要求路径中不能有中文+空格------职业操作
1).要求以超级管理员的权限 启动nginx服务器. 动态获取权限.
2).检查任务管理器 查看是否有nginx服务项
3).浏览器访问nginx服务器.
3 Nginx安装中遇到的问题
1).nginx不能正常启动.
执行了nginx启动命令之后,在任务管理中 详细信息中检查是否有服务. 如果没有则表示nginx启动异常.
2).一般检查80端口是否被占用.
搜索80端口被占用的情况
Nginx命令
关于Nginx进程项说明
Nginx每次启动时会生成2个进程项
1).主进程: 主要提供nginx反向代理服务的.
2).守护进程 防止主进程意外关闭的.
如果需要关闭nginx,则应该先关闭守护进程,再关闭主进程.
基本命令
前提条件: 要求在nginx的根目录中执行.
规范: 启动nginx之后,执行nginx的重启指令,检查是否有异常.
1).启动nginx start nginx 即使启动不成功,也不会报错!!!! 2).重启nginx nginx -s reload 如果配置文件编辑异常,则会显示报错信息 3).停止nginx nginx -s stop
Nginx 反向代理入门案例
反向代理入门案例
http { server { listen 80; # 监听端口号 server_name localhost; # 监听的服务名称 #反向代理的配置,获取用户指定的请求之后,将请求转向到什么位置 # / 请求访问的根目录 location / { # root关键字 反向代理文件目录 root html; # index关键字 默认跳转页面 index index.html index.htm; } } }
反向代理效果
商品图片回显实现
1 业务分析
url地址: http://image.jt.com/2020/07/11/39ff8758-57bb-4452-bf29-db6061fff24a.jpg
磁盘地址: D:\JT-SOFT\images/2020/07/11/39ff8758-57bb-4452-bf29-db6061fff24a.jpg
利用nginx服务器实现反向代理机制, 当用户访问http://image.jt.com时 要求跳转到路径 D:\JT-SOFT\images\
2 编辑Nginx的配置文件
说明:修改nginx配置文件,之后重启即可.
# 配置图片服务器代理 个别windows中"_-"字符可能不识别 server { listen 80; server_name image.jt.com; location / { #映射到目录中 root D:\JT-SOFT\images; } }
编辑HOSTS文件
位置:
利用switchHosts编辑文件
修改hosts文件权限
实现域名代理
业务需求
要求: 用户通过http://manage.jt.com:80 访问localhost:8091服务器.
反向代理-服务器域名代理
# 配置域名代理 server { listen 80; server_name manage.jt.com; location / { #代理的是服务器地址 proxy_pass http://localhost:8091; } }
Nginx负载均衡策略
什么是负载均衡
说明:在分布式条件下,为了提高用户请求的响应能力,准备多台服务器.一起抗击高并发.需要用户通过同一个网址访问不同服务器的技术称之为负载均衡机制.
准备多台tomcat服务器
1 规划说明
准备3台tomcat服务器,并且端口号依次为8081/8082/8083,之后完成项目Windows部署.
2 编辑MsgController
说明:动态获取当前服务器端口号信息
@RestController public class MsgController { @Value("${server.port}") private int port; //主要获取当前访问服务器的端口号信息!!!! @RequestMapping("/getPort") public String getMsg() { return "您当前访问的服务器端口号:"+port; } }
项目打包
注意事项:
1).按照规定修改端口号信息 8081/8082/8083
2).将JT项目整体打包部署.
3).项目打包成功展现
4).将项目打包之后部署
5).项目发布
利用命令实现项目发布: java -jar 8081.war
关于项目方发布访问问题
说明: 通过命令发布项目之后,浏览器访问速度较慢.(不正常)
方式1: 直接关闭当前dos命令窗口
方式2: ctrl + c 方式 释放资源.
Nginx实现负载均衡
负载均衡需求说明
要求: 通过http://manage.jt.com 方式 依次访问8081/8082/8083服务器.
负载均衡策略----轮询
说明: 根据配置文件的顺序,依次访问tomcat服务器.
# 配置域名代理 server { listen 80; server_name manage.jt.com; location / { #代理的是服务器地址 #proxy_pass http://localhost:8091; proxy_pass http://jtW; } } #定义多台tomcat服务器 1.轮询策略 upstream jtW { server localhost:8081; server localhost:8082; server localhost:8083; }
负载均衡策略----权重
权重策略: 让性能更优的服务器更多的处理请求.
#定义多台tomcat服务器 1.轮询策略 2.权重策略 upstream jtW { server localhost:8081 weight=6; server localhost:8082 weight=3; server localhost:8083 weight=1; }
负载均衡策略—IPHASH策略
说明: 如果需要用户与后端服务器进行绑定时,可以使用IPhash策略.
案例A: 有时用户可能做登录操作,可能将用户信息保存到session对象 中,如果这时采用轮询/权重的策略,可能访问其他的业务服务器.导致用户频繁的登录.
配置信息:
#定义多台tomcat服务器 1.轮询策略 2.权重策略 upstream jtW { ip_hash; server localhost:8081 weight=6; server localhost:8082 weight=3; server localhost:8083 weight=1; }
IPHASH原理:
补充知识:
1).IPHASH一般只做测试时用.
2).使用IPHASH可能造成负载不均的现象. 某些服务器负载压力过高.有宕机的风险.
3).使用IPHASH时,如果后端服务器宕机,则直接影响用户的使用.
4).工作中如果需要实现用户信息的共享,一般采用SSO的方式进行.
用户只需一次登录就可以访问所有相互信任的应用系统
关于Nginx属性配置
关于Nginx工作原理说明
默认条件下,nginx会按照指定的负载均衡规则访问服务器。如果访问的服务器又出现了问题,那么则会访问下一台服务器。但是随着负载均衡的继续,任然访问故障机.效率低.
down属性
说明:如果遇到某台tomcat服务器宕机,则可以通过down属性标识故障机,则nginx永远不会主动访问故障机.
#定义多台tomcat服务器 1.轮询策略 2.权重策略 3.ip_hash策略 upstream jtW { #ip_hash; server localhost:8081 weight=6 down; server localhost:8082 weight=3; server localhost:8083 weight=1; }
backup 属性
说明: backup的作用表示标识备用机. 一般情况下备用不工作.当遇到主机全部宕机/遇忙时,这时备用机才会生效.
#定义多台tomcat服务器 1.轮询策略 2.权重策略 3.ip_hash策略 upstream jtW { #ip_hash; server localhost:8081 weight=6 down; server localhost:8082 weight=3 down; server localhost:8083 weight=1 backup; }
设定访问超时
属性说明:
1.max_fails=1 允许访问失败的最多次数
2.fail_timeout=60s 失败的超时时间(理解为时间区间)
当服务器宕机时,这时配置文件还没有被标识为down时.开启了高可用的机制. 只要失败的次数超过最大失败次数,则
在指定的时间周期之内,不会再次访问故障机.
#定义多台tomcat服务器 1.轮询策略 2.权重策略 3.ip_hash策略 upstream jtW { #ip_hash; server localhost:8081 max_fails=1 fail_timeout=60s; server localhost:8082 max_fails=1 fail_timeout=60s; server localhost:8083 max_fails=1 fail_timeout=60s; }
- Redhat/CentOS 5.7 安装Nginx 1.8 及配置反向代理手册
- 使用nginx反向代理后如何在后台web应用中获取用户ip
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解 (转载)
- Nginx反向代理and负载均衡实例详解
- nginx反向代理到tomcat
- nginx 正向代理 反向代理
- Nginx入门-反向代理、负载均衡
- squid,nginx,lighttpd反向代理的区别
- Nginx反向代理获取客户端真实IP
- NGINX反向代理的配置
- Nginx反向代理设置 从80端口转向其他端口
- nginx配置反向代理解决前后端分离跨域问题
- NGINX反向代理在测试中的几个应用场景
- 使用Nginx反向代理tomcat服务器
- nginx 反向代理
- (一)Nginx-反向代理
- nginx设置反向代理后无法识别css,js等等
- nginx 反向代理上网
- 关于nginx+tomcat搭建反向代理时路径和端口问题
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(二)