社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
谈到nginx,就会想到“反向代理”,“高可用”,“负载均衡”等等,我呢也是刚刚了解,做一个笔记,仅供参考。
当发送一个请求时,先到管理员,管理员发信号给master,由master发信号给worker,worker争取资源返回。
1.正向代理
(1)当客户端访问要进行互联网访问,不能直接访问,要通过在客户端 配置代理服务器,来进行服务联网,访问到目标服务。
例如:用户通过浏览器访问www.gogal.com,在浏览器配置之后,访问www.abc.com,以可以访问到目标服务
弊端:需要客户端自己做配置
(2)配置
目标:客户端输入www.123.com:8080 访问到156.122.100.10 服务器8080端口
操作:
a.服务器启动服务,端口8080开启,并且,服务器对外开放该端口
b.在本地(windows系统)配置host文件156.122.100.10 www.123.com
2.反向代理
(1)客户端不需要配置,只需将请求发送到反向代理服务器,由反向代理服务器选择目标获取数据,再返回给客户端。在用户眼中,反向代理服务与服务端是一体的,这样可以隐藏真实服务器的ip地址。
(2)配置
目标:客户端输入www.123.com 访问到156.122.100.10 服务器8080端口
操作:
a.服务器启动服务,端口8080开启,并且,服务器对外开放该端口
b.在服务器安装好nginx,配置nginx.conf文件
c.在本地(windows系统)配置host文件156.122.100.10 www.123.com
//虚拟主机配置
server {
listen: 80
server_name: 156.122.100.10 //虚拟服务器的识别路径
#反向代理配置
location / {
root html;
proxy_pass: http://127.0.0.1:8080; //重点:反向代理转发路径
index index.html index.html;
}
}
目标:客户端输入156.122.100.10:9001/edu/ 访问到156.122.100.10 服务器8080端口;客户端输入156.122.100.10:9001/dev/ 访问到156.122.100.10 服务器8081端口
操作:
a.服务器启动2个服务,端口8080,8081开启,并且,服务器对外开放端口
b.在服务器安装好nginx,配置nginx.conf文件
server {
listen: 9001 //监听端口
server_name: 156.122.100.10 //虚拟服务器的识别路径
#反向代理配置
location ~/edu/ { //正则表达式,路径中包含edu
proxy_pass: http://127.0.0.1:8080; //重点:反向代理转发路径
}
location ~/dev/ { //正则表达式,路径中包含dev
proxy_pass: http://127.0.0.1:8081; //重点:反向代理转发路径
}
}
(1)当客户端请求变大、数据量变大时候,单纯增加硬件配置来提高性能就不是很优的解决方式,就有了负载均衡概念:增加服务器数量,将请求均发到各个服务器上的这个过程。
(2)配置
目标:客户端输入156.122.100.1/edu/ a.html,负载均衡,平均分担到8080端口、8081端口。
操作:
a.服务器启动2个服务,端口8080,8081开启,服务下都有/edu/a.html页面。并且,服务器对外开放端口
b.在服务器安装好nginx,配置nginx.conf文件
http {
//第一步:负载均衡的主列表
upstream myserver {
server 156.122.100.1:8080;
server 156.122.100.1:8081;
}
server {
listen: 80 //监听端口
server_name: 156.122.100.1 //虚拟服务器的识别路径
#反向代理配置
location / {
root html;
proxy_pass: http://myserver; //第二步:反向代理转发路径
index index.html index.html;
}
}
}
(3)策略
轮询:(默认)艰苦艰苦
**权重:**默认权重为1,权重越高被分配的客户端越多
upstream myserver {
server 156.122.100.1:8080 weight:10;
server 156.122.100.1:8081 weight:5;
}
ip_hash:
每个请求访问IP的hash结果分配,使每个访客固定访问一个后端服务器,解决session问题。
upstream myserver {
ip_hash;
server 156.122.100.1:8080;
server 156.122.100.1:8081;
}
(1)为了加快网站解析速度,将动态页面和静态页面用不同服务器来解析,加快解析速度,降低单个服务器的压力。主要是前端服务,静态文件例如:html,js,css;动态文件例如:jsp,servlet。
(2)配置
目标:客户端输入156.122.100.1/edu/image/1.png,访问图片资源;156.122.100.1/edu/www/1.html,访问html资源。
操作:
a.服务器创建相应的文件
b.在服务器安装好nginx,配置nginx.conf文件
server {
listen: 80 //监听端口
server_name: 156.122.100.10 //虚拟服务器的识别路径
#反向代理配置
location /www/ { //www文件目录下
root /data/;
index index.html index.html;
}
location /image/ { //image目录下
root /data/;
autoindex on; //列出文件
}
}
(1)高可用:
例如当发送一个请求时,nginx将请求分发到不同的服务中,在这个过程中,如果nginx宕机了,那服务就无法正确请求了。所以,为了避免就要高可用。
例如,当发送一个请求时,有2个nginx服务,一个做主服务器,另一个做备份服务器,当主服务宕机了,备份服务器就顶上。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!