Java-Nginx基础

1. 什么是 Nginx?

Nginx是一款高性能的HTTP服务器,其特点是占有内存少,并发能力强,负载均衡、反向代理、处理静态文件优势大,通常配合Tomcat使用实现动静分离

2. Dokcer 配置 Nginx

docker中的nginx配置文件对应位置

  • /etc/nginx/nginx.conf 主配置文件,全局块、events块、http块
  • /etc/nginx/conf.d 文件夹下的所有附加配置文件,可以单独配置sever块

docker配置nginx方法

  1. 创建映射目录,获取nginx.conf文件,此文件中包含server配置
mkdir -p /home/app/nginx/{conf,conf.d,html,logs}
cd /home/app/nginx/conf
wget https://trac.nginx.org/nginx/export/HEAD/nginx/conf/nginx.conf
  1. 启动容器,映射相关目录和配置文件
docker run --privileged=true --name mynginx -p 80:80 \
-v /home/app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/app/nginx/conf.d:/etc/nginx/conf.d \
-v /home/app/nginx/logs:/var/log/nginx \
-v /home/app/nginx/html:/usr/share/nginx/html \
-d nginx:latest

3. 负载均衡

针对的是集群,即对同一服务部署多个服务器以分担压力

假设后台服务器如下

  • 反向代理nginx服务器:xxx.xxx.xxx.xxx:80 www.codfish.com
  • 后台tomcat服务器:127.0.0.1:8080;127.0.0.1:8081;127.0.0.1:8082
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

	upstream tomcats {
		ip_hash;
		server xxx.xxx.xxx.xxx:8080;
		server xxx.xxx.xxx.xxx:8081;
		server xxx.xxx.xxx.xxx:8082;
	}
	
	server {
		listen       80;
	    server_name  www.codfish.com;

		location / {
			proxy_pass http://tomcats;
		}
		
	 	error_page   500 502 503 504  /50x.html;
     	location = /50x.html {
        	root   html;
     	}
     }		
}
  • 轮询:请求按照时间顺序分配到不同的服务器上,默认方式
  • 权重:按重要性合理分配各服务器权重,weight=?
  • ip哈希:根据访问ip的hash结果分配固定服务器,ip_hash
  • 最少连接:将请求优先分配到连接数最少的服务器上,least_conn
  • fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配

Nginx 和 Ribbon 两种负载均衡的区别:作用位置不同

Ribbon:本地负载均衡
在调用服务接口时,会在注册中心获取服务列表,然后缓存在本地,在本地实现远程调用。

Nginx:服务器负载均衡
客户端所有的请求都会交给Nginx服务器,然后由Nginx实现请求的分发。

你可能感兴趣的:(JavaWeb基础)