Nginx的动态代理,负载均衡,动静分离的简单使用
nginx
一 Nginx介绍
1.1 为什么要学习Nginx
问题1: 客户端到底要将请求发送那台服务器
问题2:所有客户端的请求都发送给了服务器1
问题3:客户端发送的请求可能是申请静态资源的,也有可能是访问动态资源的
1.2 Nginx介绍
特点:
1.稳定性极强,7*24小时不间断运行
2.Nginx提供了非常的配置实例
3.占用内存小,并发能力强
二 Nginx安装
2.1 安装
version: '3.1'
services: nginx:restart: alwaysimage: nginx:1.19.2container_name: study_nginxports:- 80:80
2.2 Nginx配置文件
nginx.conf
user nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;# 以上统称全局块
# worker_processes 它的数值越大,Nginx的并发能力越强
# error_log 代表Nginx的日志文件存放位置events {worker_connections 1024;
}# events块
# worker_connections 默认1024 数字越大,Nginx的并发能力越强http {include /etc/nginx/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 /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;include /etc/nginx/conf.d/*.conf;
}# http块
# 上面的include 代表引入一个外部文件 ->mime.types中存放了大量的媒体类型
# 下面的include /etc/nginx/conf.d/*.conf; 引入了conf.d目录下的以.conf的配置文件
Server块
server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}
# location 块
# root 将接收到的请求根据/usr/share/nginx/html去查找静态资源
# index 默认去上述的路径中找到index.html或者index.htmerror_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
# server块
# listen 代表Nginx的监听端口号
# localhost 代表Nginx接收请求的ip
#
三 Nginx的反向代理
3.1 什么是正向代理:
1.正向代理服务时由客户端设立的
2客户端了解代理服务器和目标服务器都是谁
3.帮助实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址
3.2 什么是反向代理
1.反向代理服务器是配置在服务端的
2.客户端是不知道到底访问的那一台服务器
3.达到负载均衡,并且可以真正的隐藏ip地址
3.3 基于Nginx实现反向代理
1.准备一个目标服务器
启动一个tomcat服务器8080端口,在ROOT目录下放一个index.html页面
2.编写nginx配置文件通过nginx访问tomcat容器,实现反向代理
修改conf.d目录下的default.conf文件
server{listen 80;server_name localhost;#基于反向代理访问到nacoslocation = /index {proxy_pass http://47.112.174.148:8848/nacos;}# 基于反向代理访问百度location ^~ /test/ {proxy_pass http://47.112.174.148:8081;}#基于反向代理访问到tomcat服务器location / {proxy_pass http://47.112.174.148:8080;}
}
然后访问nginx的80端口,如果页面展示的是tomcat的index.html页面,说明nginx反向代理成功
3.3.1 关于nginx的location路径映射
优先级关系:
(location = ) > (location /xxx/yyy/zzz) > (location ^~) > (location ~ , ~*) > (location/起始路径) > (location /)
# 1. = 匹配
location = / {# 精准匹配,主机名后面不能携带任何字符串
}# 2. 通用匹配
location /xxx {# 匹配所有以/xxx开头的路径
}# 3. 正则匹配
location ~ /xxx {# 匹配所有以/xxx开头的路径,与2的效果一样 但是比2中优先级高些
}# 4. 匹配开头路径
location ^~/images/ {# 匹配所有以/images开头的路径
}# 5 匹配文件路径
~*\.(gif|jpg|png){# 匹配以gif或者jpg或者png为结尾的路径
}
四 Nginx的负载均衡
Nginx为我们提供了三种负载均衡的策略
轮询:
将客户端发起的请求,平均分配给每个服务器,轮着处理请求
权重:
会将客户端的请求,根据服务器的权重值不同,分配不同的请求数量给权重不同的服务器
ip_hash
基于发起请求的客户端IP地址不同,他会始终将请求发送到指定的服务器上.
4.1 轮询
修改conf.d目录下的default.conf文件
# 在server块外面声明upsteam fs-server是我自己取得名字 自定义名称不要加下划线_
# server 指定服务地址,端口
upsteam fs-server {server 47.112.174.148:8080;server 47.112.174.148:8081;.....
}server{listen 80;server_name localhost;#基于反向代理到我们上面upsteam指定的服务名字,默认使用轮询location / {proxy_pass http://upsteam的名字/;}
}
4.2 权重
修改conf.d目录下的default.conf文件
# 在server块外面声明upsteam fs-server是我自己取得名字 自定义名称不要加下划线_
# server 指定服务地址,端口
# weight=值越大权重约定,被访问的几率大些
upsteam fs-server {server ip:port weight=10;server ip:port weight=2;.....
}server{listen 80;server_name localhost;#基于反向代理到我们上面upsteam指定的服务名字,默认使用轮询location / {proxy_pass http://upsteam的名字/;}
}
4.3 ip_hash
修改conf.d目录下的default.conf文件
# 在server块外面声明upsteam fs-server是我自己取得名字 自定义名称不要加下划线_
# server 指定服务地址,端口
# ip_hash 表示负载均衡使用ip_hash 当某个ip访问nginx的时候,后续始终将请求发送到指定的服务器上.
upsteam fs-server {ip_hash;server ip:port;server ip:port;.....
}server{listen 80;server_name localhost;#基于反向代理到我们上面upsteam指定的服务名字,默认使用轮询location / {proxy_pass http://upsteam的名字/;}
}
五 Nginx的动静分离
Nginx的并发能力公式:
Nginx的配置文件中worker_processes和events块的worker_connections相乘除以4或者2,最终的结果就是nginx的并发能力
worker_processes*worker_connections/4|2=Nginx最终的并发能力
动态资源需要/4,静态资源/2
Nginx通过动静分离,来提升Nginx的并发能力,更快的给用户响应
5.1 动态资源代理
# 配置如下
location / {proxy_pass ip;
}
5.2 静态资源代理
# 配置如下
location / {root 静态资源路径;index 默认访问路径下的资源;autoindex on: # 代表展示静态资源全部的内容,以列表的形式展开.
}
测试案例,先修添加一个index.html和1.jpg静态资源
六 Nginx集群
单点故障,导致整个程序的崩溃,提升高可用
Nginx的动态代理,负载均衡,动静分离的简单使用相关推荐
- Nginx 反向代理 负载均衡 动静分离 高可用 原理
1.Nginx简介 1.1 概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,特点是占有内存少,并发能力强,能经受高负载的考验,有报告表明能 ...
- Nginx 方向代理/负载均衡/动静分离/高可用
一,反向代理 正向代理:正向代理服务器位于客户端和服务器之间,为了向服务器获取数据,客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端.这里客户端是要进行 ...
- HAproxy负载均衡动静分离实现及配置详解
HAproxy负载均衡动静分离实现及配置详解 HAproxy的介绍 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAP ...
- Caddy - Web服务器的新秀 高性能 配置简单 动态代理 负载均衡
Caddy - Web服务器的新秀 高性能 配置简单 动态代理 负载均衡 据Netcraft今年5月份放出了一篇统计文章中,Apache.Nginx和微软的IIS分别以45.61%.20.22%和7. ...
- ngixn+tomcat负载均衡 动静分离配置 (nginx反向代理)
文章目录 Tomcat主要配置文件 Nginx负载均衡实现原理 实验环境 动静分离配置 创建静态页面 配置动态页面 图片动静分离 Tomcat主要配置文件 bin:存放启动和关闭Tomcat脚本 co ...
- Nginx快速入门(安装 负载均衡 动静分离 主备 原理)
什么是Nginx? Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ra ...
- nginx+apache实现负载均衡+动静分离配置(编译安装)
一.编译安装nginx cd /usr/local/src wget http://nginx.org/download/nginx-1.6.3.tar.gz tar -zxvf nginx-1.6. ...
- 四层负载均衡 动静分离和资源分离 Rewrite rewrite伪静态实例
文章目录 四层负载均衡 四层负载均衡特点 查看四层负载均衡语法 四层负载均衡配置 优化配置文件 四层负载均衡日志配置 nginx的TCP负载均衡---端口转发 动静分离 单台的动静分离 多台机器动静分 ...
- Nginx(二) 反向代理负载均衡
1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...
最新文章
- 基于单个xml的数据库
- 25台机器人=18名搬运工,我在徐福记工厂,围观了给旷视河图的落地现场
- python免费试听-哈尔滨Python人工智能课程免费试听
- numpy中的ndim、shape、dtype、astype
- 配置vbox fedora虚拟机的VboxGuestAdditions
- 【学术相关】如何避免博士延期毕业?
- Spark 下操作 HBase
- 40.Node.js Web 模块
- 网管型工业交换机如何提高网路流量过滤?
- Python 中的 while循环 和 for... in ...循环
- a标签的href和onclick的区别
- 变量的语法扩展(JS)
- npm login 登录失败,报E500 Internal Server Error - PUT https://registry.npm.taobao.org/-/user/org.couchdb
- VS2019 + Qt ERROR MSB4181 QtRunwork 返回了false,但未记录错误
- 网页实现语音对讲_GB28181实现摄像头语音对讲 - web音频采集调用示例
- surfer画世界频率分布图(等高线、地点标注)
- 文本区 JTextArea 的使用
- Linux基础知识点总结
- GlobalMapper20脚本应用(数据批量自动化处理)
- SNAT、DNAT、MASQUERADE的区别
热门文章
- ZOJ 2702 Unrhymable Rhymes(DP)
- 矩阵快速幂 学习笔记
- 区分Activity的四种加载模式(转)
- VS2005发布网站问题及aspnet_merge.exe”已退出,代码为 1的错误
- android ProgressBar 自定义进度条颜色
- vue wabpack 切换开发环境 和生成环境 的接口地址
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:移除默认的列表样式
- 51nod 1267 4个数和为0
- 解决No enclosing instance of type * is accessible
- 【SSH】——Struts2中的动态方法调用(一)