Nginx详解

1、高并发时代

单台tomcat在理想情况下可支持的最大并发数量在200~500之间,如果大于这个数量可能会造成响应缓慢甚至宕机。

解决方案是通过多台服务器分摊并发压力,这不仅需要有多台tomcat服务器,还需要一台服务器专门用来分配请求。这既是反向代理服务器

2、Nginx概述

Nginx是一款优秀的反向代理服务器程序,能够为若干台服务器提供反向代理服务,一方面为客户端提供一个统一访问的地址,一方面为后台多个服务器提供负载均衡

Nginx可以实现不仅可以实现反向代理,也可以实现正向代理,不过一般我们都是使用反向代理,即代理服务器集群,因为一般集群部署也是服务端

  • 正向代理

Nginx详解_第1张图片

nginx为客户端代理称为正向代理。客户端集群部署,可以通过访问同一个地址来访问服务端。

  • 反向代理

Nginx详解_第2张图片

nginx为服务端代理称之为反向代理。Nginx为访问服务端提供一个统一的接口,客户端只需要访问这个统一接口就可以访问到服务端。

3、Nginx使用

通过Nginx实现请求转发

例:当客户端访问http://www.pq.com时,由nginx转发给 http://127.0.0.1:8080端口进行处理

在nginx.conf中配置

http{
#为nginx配置一个虚拟服务器,
	server {
#监听本机80端口
		listen 80;
#接收对www.pq.com主机名的访问
		server_name www.pq.com;
#对/即任意路径的访问进行处理
	location / {
#转发到指定地址
		proxy_pass http://127.0.0.1:8080;
				}
#可以配置多个location
...
}
#可以配置多个server
...
}

通过server和location配置转发的地址。接下来用户可以通过访问 www.pq.com,实际请求是被转发到 127.0.0.1:8080

实现负载均衡

对服务端集群部署,如现在对于客户端的请求有三台服务器可以处理,nginx可以对这三台服务器进行负载均衡,并提供一个统一的接口给客户端访问

在nginx.conf中这样配置:

#upstream是nginx配置文件中的关键字,用来配置一组服务器地址供后续使用
upstream big1907{
	server 127.0.0.1:8081;
	server 127.0.0.1:8082;
	server 127.0.0.1:8083;
}
	server {
		listen 80; #对80端口的访问
		server_name www.pq.com; #对此主机名的访问
		location / {
#转发到上面配置的服务器组
			proxy_pass http://big1907;
			}
		}

对于三台服务器的请求可以都通过代理接口www.pq.com进行访问

  • Nginx中的负载均衡策略

轮询 :默认不配置就是轮询。连接请求轮流分配给服务器。

IP哈希 :(客户端ip.hash()%服务器数量),根据余数决定请求去往哪个服务器

最少连接 :将连接请求分配给目前连接数最少的服务器

基于权重 :根据权重进行分配(权重值可以自定义,在地址后配置weight=x),权重值越大,被分配的连接就越多;如果直接配置为down,则该服务器不再被分配连接

你可能感兴趣的:(分布式,nginx,运维,java)