对Nginx的进一步了解

Nginx的跨域设置

除了在springboot项目中处理跨域,Nginx中也可以处理跨域,具体配置如下:

server{
        listen 80;
        server_name XXX;
        
        #允许跨域请求的域,*代表所有
        add_header 'Access-Control-Allow-Origin' *;
        #允许带上cookie请求
        add_header 'Access-Control-Allow-Credentials' 'true';
        #允许请求的方法,比如 GET/POST/PUT/DELETE
        add_header 'Access-Control-Allow-Methods' *;
        #允许请求的header
        add_header 'Access-Control-Allow-Headers' *;
        
        location / {
        	root /home/food;
        	index index.html;
        }
}

Nginx配置资源防盗链

可以防止其他站点访问本站点的资源

*.xxx.com就是自己配置的域名

server{
        listen 80;
        server_name XXX;
        
        #允许跨域请求的域,*代表所有
        add_header 'Access-Control-Allow-Origin' *;
        #允许带上cookie请求
        add_header 'Access-Control-Allow-Credentials' 'true';
        #允许请求的方法,比如 GET/POST/PUT/DELETE
        add_header 'Access-Control-Allow-Methods' *;
        #允许请求的header
        add_header 'Access-Control-Allow-Headers' *;
        
        #对源站点验证
        valid_referers *.xxx.com;
        #非法引入会进入下方判断
        if ($invalid_referer) {
        	return 404;
        }
        
        location / {
        	root /home/food;
        	index index.html;
        }
}

四层、七层负载均衡

四层:

F5硬负载均衡(贵)

LVS四层负载均衡

Haproxy四层负载均衡

Nginx四层负载均衡

七层:针对Http、Https(Web服务)的负载均衡

Nginx七层负载均衡

Haproxy七层负载均衡

apache七层负载均衡

四层主要是转发(TCP,UDP),七层可以处理请求,比如Nginx可以处理响应中的js,css这些东西。

DNS地域负载均衡

这个会根据不同的地域,请求不同的地域的服务器。

比如人在北京会请求北京的服务器,人在浙江请求浙江的服务器。

upstream搭建集群

yyy 就是集群的一个名词,proxy_pass 表示的有请求进来 要去匹配的这个集群(规则)

upstream yyy {
	server 192.168.3.32:8080;
	server 192.168.3.33:8080;
	server 192.168.3.34:8080;
}

server {
	listrn 80;
	server_name www.xxx.com;
	
	location / {
		proxy_pass http://yyy;
	}
}

Nginx负载均衡策略

轮询(默认)

集群中有3台服务器,每次刷新都会轮询到另外一台上。

权重轮询

weight默认值为1,值越大,权重越大。

upstream yyy {
	server 192.168.3.32:8080 weight=1;
	server 192.168.3.33:8080 weight=2;
	server 192.168.3.34:8080 weight=3;
}

upstream指令参数

max_conns:一台服务器最大的连接数,默认值为0,也就是不做任何限制

如下配置也就是,最大9个用户同时访问,其他的可能会访问不到,只能等前面的释放了之后才能正常访问。

upstream yyy {
	server 192.168.3.32:8080 max-conns=2;
	server 192.168.3.33:8080 max-conns=3;
	server 192.168.3.34:8080 max-conns=4;
}
slow_start

缓慢启动,服务器慢慢加入集群

slow_start只适用于集群,否则失效

商业版,需要付费

down

添加了down,那么这台服务器就不能被访问到

backup

添加了backup之后,如果有服务器挂掉了,这台才会启用,才会被用户访问到

max_fails

最大的失败次数,达到了这个次数,那么这台服务器就不能被访问了

max_fails只适用于集群,否则失效

fail_timeout

失败的时间段

fail_timeout只适用于集群,否则失效

如果max_fails=3,fail_timeout=15,那么就是说在15秒以内某个请求到达了这台服务器,失败了3次,那么就会认为这台服务器宕机了,随后还会继续等待15秒,在这15秒之内就不会有请求发送到这台宕机的服务器上。等15秒之后又新的请求过来就会尝试到这台宕机的服务器上,循环上面的操作。

keepalive

可以提高吞吐率,也就是把之前请求完毕就断开连接变成了一个长连接。

在location中需要设置http的版本,默认是1.0,是不存在长连接的

Connection ""意思就是清楚connection header里的一些信息

upstream yyy {
	server 192.168.3.32:8080;
	server 192.168.3.33:8080;
	server 192.168.3.34:8080;
	
	keepalive 32;
}

server {
	listrn 80;
	server_name www.xxx.com;
	
	location / {
		proxy_pass http://yyy;
		proxy_http_version 1.1;
		proxy_set_header Connection "";
	}
}

负载均衡之ip_hash

算法:hash(ip) % node_counts = index

node_counts就是服务器节点数,index就是访问下标为index的那台服务器

只需要在upstream里添加ip_hash;就会使用这个算法去请求。

upstream yyy {
	ip_hash;

	server 192.168.3.32:8080;
	server 192.168.3.33:8080;
	server 192.168.3.34:8080;
}

他的hash算法是根据ip的前三段.如192.168.3.32,他知根据192.168.3根据计算

如果需要移除某一台服务器,不能直接在配置中删除,而是在那台需要删除的服务器后面加上down,如果直接删除会影响hash算法,从而影响一些缓存等。

一致性hash算法

在一个0-((2^32)-1)的闭合空间中

**采用顺时针就近原则:**让用户访问顺时针方向上最近的服务器节点

当服务器节点删除时,那台宕机服务器上的用户数据就会被迁移到顺时针就近的那台服务器上,用户也就到那台服务器上访问

当服务器增加时候,用户也是会就近去新增加的服务器上,原则上要保证是就近顺时针上的服务器节点。

url_hash

hash(url) % node_counts = index

根据访问的url Hash值来觉得访问那台服务器

upstream yyy {
	hash $request_uri;

	server 192.168.3.32:8080;
	server 192.168.3.33:8080;
	server 192.168.3.34:8080;
}

least_conn

根据最少的连接数去进行请求

upstream yyy {
	hash $request_uri;
	least_conn;

	server 192.168.3.32:8080;
	server 192.168.3.33:8080;
	server 192.168.3.34:8080;
}

控制缓存

expires 10s;表示10秒之后过期

expires @22h30m;表示晚上10:30过期

expires -1h;距离现在1个小时之前过期

expires epoch;缓存不生效

expires off;使用浏览器默认

expires max;永不过期(315360000)

server {
	listrn 80;
	server_name www.xxx.com;
	
	location /static {
		alias /home;
		#expires 10s;
		#expires @22h30m;
		#expires -1h;
		#expires epoch;
		#expires off;
		expires max;
	}
}

反向代理缓存

proxy_cache_path 设置缓存目录

keys_zone 设置共享内存以及占用空间大小

max_size 设置缓存大小

inactive 超过此时间则被清理

use_temp_path 临时目录,使用后会影响nginx性能

proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;

server {
	listrn 80;
	server_name www.xxx.com;
	
	proxy_cache mycahce; #开启并使用缓存
	proxy_cache_valid 200 304 8h; #针对状态码200和304状态码的缓存设置过期时间
	
	location /static {
		alias /home;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值