nginx知识点

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

2、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

3、在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;
	}          #反向代理到后端第四个服务
}

4、nginx做负载均衡(基于7层)

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的数量与之对应。

5、nginx基于第几层做负载均衡

1)、第四层(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块中。

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

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的数量与之对应。

6、nginx做负载均衡的算法有哪些

nginx做负载均衡的算法有轮询、加权轮询、ip_hash、最小连接数,默认情况下使用的是轮询。

(1)、轮询是Nginx默认的负载均衡算法。在这种算法中,Nginx会按照配置文件中服务器的顺序,逐一将请求分发到不同的后端服务器。当所有服务器都被遍历一遍后,算法会重新开始,从第一个服务器继续分发请求。

(2)、加权轮询是轮询算法的一种扩展,它允许管理员为后端服务器分配不同的权重。Nginx会根据这些权重来决定分发请求的比例。

(3)、ip_hash算法根据客户端的IP地址来计算一个哈希值,并将该哈希值映射到后端服务器列表中。这样,来自同一IP地址的请求都会被分发到同一台后端服务器上。

(4)、最小连接数算法会将新的请求分发到当前连接数最少的后端服务器上。这种算法旨在优化资源利用,确保负载均衡器能够更公平地分配请求。
posted @   杭州云运维  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示