Nginx —— 一份前端开发工程师需要了解要懂的知识点
《工欲善其事,必先利其器》
之前我写过一篇文章 —— 《Nginx实现反向代理》。
那篇文章现在回头看看感觉有点粗糙,感兴趣的朋友可以去看看。
所以今天决定重新梳理一下,Nginx
反向代理和负载均衡的知识点。本篇文章转载自掘金社区 —— 《谁说前端不需要懂-Nginx反向代理与负载均衡》。
一、什么是反向代理?
当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问集群。
这个时候,我们通过第三方服务器访问服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容,保护了服务器,避免被直接攻击。这种代理方式称为反向代理。
二、什么是负载均衡?
公司会建立很多的服务器,这些服务器组成了服务器集群,然后,当用户访问网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器。
所以,用户每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
一句话:Nginx会给你分配服务器压力小的去访问。
三、Nginx 实现反向代理
Nginx
反向代理主要通过 proxy_pass
来配置,将你项目的开发机地址填写到 proxy_pass
后面,正常的格式为 proxy_pass
URL即可,记得重启服务:
server {
listen 80;
location / {
proxy_pass http://10.10.10.10:20186;
}
}
四、Nginx 实现负载均衡
ip_hash
指令;server
指令;upstream
指令及相关变量。
上面写的三个指令,我们直接通过代码来逐一分析:
// 修改nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream firstdemo {
server 39.106.145.33;
server 47.93.6.93;
}
server {
listen 8080;
location / {
proxy_pass http://firstdemo;
}
}
}
各个参数的一个说明,具体的请查看官方文档,或者菜鸟教程的参数说明 —— 立即查看。
- worker_processes
-
- 工作进程数,和CPU核数相同
- worker_connections
-
- 每个进程允许的最大连接数
- upstream
-
- 负载均衡就靠它
-
- 语法格式:
upstream name {}
- 语法格式:
-
- 里面写的两个server分别对应着不同的服务器
- server
-
- 实现反向代理
-
- listen监督端口号
-
location / {}
访问根路径
-
proxy_pass
设置http://firstdemo
,代理到firstdemo
里两个服务器上
然后,设置完时候,需要重启服务。
那么再次访问localhost:8080,会看到如下图页面:
还有另一个页面:
每次刷新都会访问不同的服务器,这样就做到了负载均衡的处理。
五、实现更科学的负载均衡
我们在开发过程中,更应该做到的是,当用户第一次访问到其中一台服务器后,下次再访问的时候就直接访问该台服务器就好了,不用总变化了。那么就发挥了 ip_hash
的威力了:
// 省略...
upstream firstdemo {
ip_hash;
server 39.106.145.33;
server 47.93.6.93;
}
ip_hash
它的作用是如果第一次访问该服务器后就记录,之后再访问都是该服务器了,这样比如第一次访问是33服务器,那之后再访问也会分配为33服务器访问了。
到此结束,感谢你的阅读。