Nginx 笔记

126 阅读3分钟

基于狂神的视频

【【狂神说】Nginx最新教程通俗易懂,40分钟搞定!】 www.bilibili.com/video/BV1F5… 以及专栏 www.kuangstudy.com/bbs/1353634…

为什么要用Nginx?

1.由于并发访问量很大,一台服务器往往满足不了访问需求

kuangstudy1d77bc35-df30-46fb-8c41-61ff4468d0c9.png

2.我们会对服务器进行横向扩容,此时需要代理服务器,用来转发和处理请求

kuangstudy33ee7313-9356-46e6-a0b2-fc1ed8ef9a62.png

  • 我们希望这个代理服务器可以帮助我们接收用户的请求
  • 然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。
  • 这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,
  • 我们还希望他可以按照服务器的性能提供不同的权重选择

Nginx就是这么个服务器

什么是Nginx?

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

什么是正向代理和反向代理?

正向代理

充当客户端的代理,比如科学上网工具

kuangstudy46bdad36-d3e0-43b0-a223-43360b7e8fc7.png

反向代理

充当服务器端的代理,作为服务器的网关来工作,客户端始终不会和服务器进行直接通信

kuangstudy62a15097-6e2a-4dbe-bcf5-f0d7cab81089.png

Nginx的负载均衡策略

什么是负载均衡?

一种技术,在多个资源中分配负载,以达到最佳化资源使用,最大化吞吐率,最快响应时间等目的.

轮询

对相同权重的服务器进行轮流的访问

kuangstudy4d33dfac-1949-4b2d-abb8-fe0b6e65b8dc.png

加权轮询

给服务器设定不同的权重.权重越高的服务器要处理的请求越多,保证服务器群的性能最大化

kuangstudyb1e3e440-4159-4259-a174-528b56cb04b2.png

Iphash

对客户端的ip进行hash操作,通过得到的hash值来保证一个ip只会被一台服务器处理

可以用来解决session不共享的问题:

session保存在服务器端,多台服务器就会有多个session,导致session不共享

kuangstudy64acb9a3-cd1a-4c0e-a1fa-9b220046a95a.png

Nginx的动静分离功能

kuangstudyedb1bbd6-e530-4aba-8fde-68658a10e73f.png

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/;
}