Nginx入门记录

1.什么是Nginx

介绍

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

特点

更快:单次请求响应更快,高并发可以更快的处理响应

高拓展性:设计极具扩展性,由多个不同功能、不同层次、不同类型且耦合度极低的模块组成

高可靠性:很多高流量网站都在核心服务器上大规模使用 Nginx

低内存消耗:一般1万个非活跃的 HTTP Keep-Alive 连接在 Nginx 中仅消耗2.5MB内存

高并发:单机支持10万以上的并发连接

热部署:master 管理进程与 worker工作进程的分离设计,使得 Nginx 能够支持热部署

开源协议:使用 BSD 许可协议,免费使用,且可修改源码

2.应用场景

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。动静分离的意思就是区分用户的访问类型,第一种是动态访问是需要调用后台数据的访问;第二种是静态的访问只需静态资源的访问(如:css、html、jpg、js等等文件)。那么Nginx动静分离就是区分用户的访问类型,然后分配访问不同的服务器,提高资源响应的速度。
在这里插入图片描述

反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只 需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
在这里插入图片描述

负载均衡

Nginx 把请求均匀的分摊给上游的应用服务器,这样即使某一个服务器宕机也不会影响请求的处理,或者当应用服务器扛不住了,可以随时进行扩容。 目前Nginx支持自带3种负载均衡策略(1.轮询 2. 权重 3. ip_hash ),还有2种常用的第三方策略(4. fair 5. url_hash)不过需要安装第三方模块才能使用 。
在这里插入图片描述

3.使用方式

动静分离

以在Nginx上部署Vue项目为例,将Vue项目打包后放在Nginx的html目录下,修改Nginx配置文件,访问进行测试
在这里插入图片描述

server {
	# 设置监听的端口号以及服务名称
	listen 7001;
	server_name "oneSystem";
	
	#禁止访问某些后缀文件
    location ~ \.(ini|conf|txt|svn|git)
    {
        deny all;
    }
	
	# 配置根路径访问的前端项目
	location / {
		#设置根目录
		root  html/cms-system/;
		#设置默认页
		index index.html index.htm;
		#解决页面刷新导致空白
		try_files $uri $uri/ /cms-system/index.html;
	}
	# 配置各路径访问的前端项目
	location /cms-system {
		alias  html/cms-system/;
		index index.html index.htm;
		try_files $uri $uri/ /cms-system/index.html;
	}
	location /journal-system {
		alias  	html/journal-system/;
        index  index.html index.htm;
		try_files $uri $uri/ /journal-system/index.html; 
    }
	location /liveWeb {
		alias  	html/liveWeb/;
        index  index.html index.htm;
		try_files $uri $uri/ /liveWeb/index.html; 
    }
	location /okr {
		alias  	html/okr/;
        index  index.html index.htm;
		try_files $uri $uri/ /okr/index.html; 
    }
	location /robot {
		alias  	html/robot/;
        index  index.html index.htm;
		try_files $uri $uri/ /robot/index.html; 
    }

	#访问异常页面配置
    error_page  404              /404.html;
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
		root   html;
	}
}

在这里插入图片描述

反向代理

查看前端配置的接口请求路径,根据请求路径修改Nginx配置文件,反向代理到部署后端项目的正确路径
在这里插入图片描述

server {
	# 设置监听的端口号以及服务名称
	listen 7001;
	server_name "oneSystem";
	
	#禁止访问某些后缀文件
    location ~ \.(ini|conf|txt|svn|git)
    {
        deny all;
    }
	
	# 配置根路径访问的前端项目
	location / {
		#设置根目录
		root  html/cms-system/;
		#设置默认页
		index index.html index.htm;
		#解决页面刷新导致空白
		try_files $uri $uri/ /cms-system/index.html;
	}
	# 配置各路径访问的前端项目
	location /cms-system {
		alias  html/cms-system/;
		index index.html index.htm;
		try_files $uri $uri/ /cms-system/index.html;
	}
	
	# 配置接口代理
	location /api_cms {
	  #关闭重定向
	  proxy_redirect off;
	  #反向代理到后端项目部署地址
	  proxy_pass   http://127.0.0.1:9018/cms_system;
	  #解决因为反向代理导致路径不一致后cookie丢失
	  proxy_cookie_path /cms_system /;
	  #设定被代理服务器接收到的header信息,重定义发往后端服务器的请求头
	  proxy_set_header Host $host;
	  proxy_set_header Remote_Addr $remote_addr;
	  proxy_set_header X-Real-Ip $remote_addr;
	  proxy_set_header   X-Forwarded-For	$proxy_add_x_forwarded_for;
	}

	#访问异常页面配置
    error_page  404              /404.html;
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
		root   html;
	}
}

在这里插入图片描述

负载均衡

1.RR(轮询 默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

在配置文件的http模块中配置服务器地址列表

#配置后端服务器列表-轮询配置
upstream systemApi {
    server  127.0.0.1:9018;
    server  127.0.0.1:9019;
}

修改接口反向代理的路径

location /api_journal {
	proxy_redirect off;
	#修改代理地址,将原来的写死路径(127.0.0.1)替换为后端服务器列表变量
	proxy_pass	http://systemApi/cms_system;
	proxy_cookie_path /cms_system /;
	proxy_set_header Host $host;
	proxy_set_header Remote_Addr $remote_addr;
	proxy_set_header X-Real-Ip $remote_addr;
	proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
}

在这里插入图片描述

模拟配置了2台服务器,Nginx会自动判断服务器的状态,如果服务器处于不能访问(服务器挂了),就不会跳转到这台服务器,所以也避免了一台服务器挂了影响使用的情况。

2.权重

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

#配置后端服务器列表-权重配置
upstream systemApi {
    server  127.0.0.1:9018 weight=4;
    server  127.0.0.1:9019 weight=1;
}

那么5次一般只会有1次会访问到9019,而有4次会访问到9018

3.ip_hash

上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用ip_hash了,ip_hash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

#配置后端服务器列表-ip_hash配置
upstream systemApi {
	ip_hash;
    server  127.0.0.1:9018;
    server  127.0.0.1:9019;
}
4.fair(最快响应)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

#配置后端服务器列表-fair配置
upstream systemApi {
	fair;
    server  127.0.0.1:9018;
    server  127.0.0.1:9019;
}
5.url_hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

#配置后端服务器列表-url_hash配置
upstream systemApi {
	hash $request_uri;
    hash_method crc32;
    server  127.0.0.1:9018;
    server  127.0.0.1:9019;
}

定向到同一个后端服务器,后端服务器为缓存时比较有效。 在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值