基于狂神的视频
【【狂神说】Nginx最新教程通俗易懂,40分钟搞定!】 www.bilibili.com/video/BV1F5… 以及专栏 www.kuangstudy.com/bbs/1353634…
为什么要用Nginx?
1.由于并发访问量很大,一台服务器往往满足不了访问需求
2.我们会对服务器进行横向扩容,此时需要代理服务器,用来转发和处理请求
- 我们希望这个代理服务器可以帮助我们接收用户的请求
- 然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。
- 这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,
- 我们还希望他可以按照服务器的性能提供不同的权重选择
Nginx就是这么个服务器
什么是Nginx?
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
什么是正向代理和反向代理?
正向代理
充当客户端的代理,比如科学上网工具
反向代理
充当服务器端的代理,作为服务器的网关来工作,客户端始终不会和服务器进行直接通信
Nginx的负载均衡策略
什么是负载均衡?
一种技术,在多个资源中分配负载,以达到最佳化资源使用,最大化吞吐率,最快响应时间等目的.
轮询
对相同权重的服务器进行轮流的访问
加权轮询
给服务器设定不同的权重.权重越高的服务器要处理的请求越多,保证服务器群的性能最大化
Iphash
对客户端的ip进行hash操作,通过得到的hash值来保证一个ip只会被一台服务器处理
可以用来解决session不共享的问题:
session保存在服务器端,多台服务器就会有多个session,导致session不共享
Nginx的动静分离功能
1.静态资源直接部署到Nginx上
2.如果一个请求是静态资源的,到Nginx的静态资源目录下去获取
3.动态资源则利用反向代理,转发给相应的Web服务器
Nginx的配置设置
负载均衡设置
注 upstream后面的名字可以任意取,设置名字的目的只是为了下面用
weight就是给服务器设置的权重,不设置的话默认为轮询策略
upstream webservers{
server 127.0.0.1:8080 weight=90 ;
\#server 127.0.0.1:8088 weight=10 ;
}
基本设置
server {
listen 80;
server_name localhost;
....
}
设置端口和默认名字
以下配置都在server下
设置静态资源
访问localhost根目录时设置静态文件目录,这里是在nginx的html目录下
location / {
root html/sky;
index index.html index.htm;
}
设置错误跳转页面
出现以下状态码时跳转到localhost/50x.html,在nginx本地的html目录下
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
设置反向代理
前端访问localhost/api时,设置跳转去的服务器
这里的webservers在上面的upstream设置内
location /api/ {
proxy_pass http://localhost:8080/admin/;
#proxy_pass http://webservers/admin/;
}