nginx知识点总结

一、nginx 简介
Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者 统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议 提供各种网络服务。
Nginx是一款 轻量级 的 Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

二、nginx的角色
web服务器、缓存服务器、做反向代理和负载均衡

三、proxy_pass加不加斜杠的区别

主机:192.168.20.144:80

(1)、proxy_pass后面有斜杠
	location /api/ {
		proxy_pass http://192.168.20.145:80/
	}
	当用户去访问http://192.168.20.144:80/api时会代理到 http://192.168.20.145:80/index.html;

(2)、proxy_pass后面无斜杠
	location /api/ {
		proxy_pass http://192.168.20.145:80
	}
	当用户去访问http://192.168.20.144:80/api时会代理到http://192.1368.20.145:80/api/index.html

四、nginx做正向代理
 由于防火墙的原因,我们并不能直接访问谷歌、推特,看GitHub等等,那么我们可以借助 VPN 来实现,这就是一个简单的正向代理的例子。这里你能够发现,正向代理 “代理” 的是 客户端,而且 客户端是知道目标的,而目标是不知道客户端是通过VPN访问的。

五、在nginx中如何访问两个不同的前端页面、如何同时做反向代理
有两个前端页面需要部署访问的话只需要写两个server块就行,分别监听不同的端口,每个前端又对应自己的后端服务,只需要在对应的的server块中写location,使用proxy_pass关键字,做反向代理即可。

server{
	listen 80;
	server_name  www.baidu.com;  #用于定义域名,请求来时会在所有的server块中匹配server_name,最后选中某一server块进行匹配,当没有匹配到server块时,一般会有一个默认的server块进行匹配,写法如server_name _;(单个下划线)
	
	location / {
		root "/xxxx/xxxx/xxxx/html";
		index index.html;
	}            #第一个前端页面

	location /api/ {
		proxy pass http://192.168.20.111:8080;
	}	    #反向代理到后端第一个服务

	location /abcd/ {
		proxy_pass http://192.168.20.100:9090;
	}          #反向代理到后端第二个服务
}


server{
	listen 80;
	server_name  www.sina.com;  
	
	location / {
		root "/xxx/xxx/html";
		index index.html;
	}            #第二个前端页面

	location /apio/ {
		proxy pass http://192.168.20.1:7070;
	}	    #反向代理到后端第三个服务

	location /Abcde/ {
		proxy_pass http://192.168.20.2:6666;
	}          #反向代理到后端第四个服务
}

六、nginx做负载均衡(基于7层)
第七层负载均衡,也称为应用层负载均衡或内容交换,主要基于HTTP/HTTPS等应用层协议的内容来实现负载均衡。Nginx的http模块支持第七层负载均衡,它可以根据请求的URI、Host头、Cookie等信息来分发请求。由于Nginx能够解析HTTP协议,因此它可以实现更加精细的负载均衡策略,如基于URL的负载均衡、基于会话的负载均衡等。这种负载均衡方式适用于需要处理HTTP/HTTPS请求的场景,能够提供更高的灵活性和可配置性。
nginx做负载均衡在http模块下写一个upstream组就行,和server同级,格式如下:

http {

	upstream student{
		server 192.168.20.1:8080;
		server 192.168.20.2:8080;
		server 192.168.20.3:8080;
	}

	server {
		listen 80;
		location / {
			proxy_pass http://student;
		}
	}

}
当需要多个负载均衡时可以增加upstream的数量,增加location的数量与之对应。

七、nginx做负载均衡(基于4层)
nginx基于第四层(TCP/IP层)负载均衡
第四层负载均衡,也称为网络层负载均衡或传输层负载均衡,主要基于IP地址和端口号来实现负载均衡。Nginx通过其stream模块支持第四层负载均衡。这种负载均衡方式不关心具体的应用层协议(如HTTP、HTTPS等),而是直接根据TCP/IP连接的信息来分发请求。它适用于那些对应用层协议无特殊要求的场景,或者当应用层协议较为复杂,不适合在应用层进行负载均衡时,可以选择在TCP/IP层进行负载均衡。

	stream {  
			upstream backend {  
  				  server 192.168.1.100:80;  
   				  server 192.168.1.101:80;  
	 	}  

			server {  
   				listen 80;  
    			proxy_pass backend;  
			}  
	}
基于四层的负载均衡,在Nginx中通常是通过stream块来配置的,而stream块与http块是同级的,而不是包含在http块中。

八、nginx做负载均衡的算法有哪些
nginx做负载均衡的算法有轮询、加权轮询、ip_hash、最小连接数,默认情况下使用的是轮询。
(1)、轮询是Nginx默认的负载均衡算法。在这种算法中,Nginx会按照配置文件中服务器的顺序,逐一将请求分发到不同的后端服务器。当所有服务器都被遍历一遍后,算法会重新开始,从第一个服务器继续分发请求。
(2)、加权轮询是轮询算法的一种扩展,它允许管理员为后端服务器分配不同的权重。Nginx会根据这些权重来决定分发请求的比例。
(3)、ip_hash算法根据客户端的IP地址来计算一个哈希值,并将该哈希值映射到后端服务器列表中。这样,来自同一IP地址的请求都会被分发到同一台后端服务器上。
(4)、最小连接数算法会将新的请求分发到当前连接数最少的后端服务器上。这种算法旨在优化资源利用,确保负载均衡器能够更公平地分配请求。

posted @   小煜云计算  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示