nginx进阶

1、解决跨域+防盗链

cors:cross-origin resource sharing
方法 jsonp、springboot Cors 、nginx

server {
        listen       80;
        server_name  localhost;
		
		#允许跨域请求的域,*代表所有 
		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 *.baidu.com; 
		#非法引入会进入下方判断
		if ($invalid_referer) { 
		    return 404;
		   }
		
		location / {
            root   /home/code;
            index  index.html;
        }
		
	}

2、模块化体系

在这里插入图片描述

3、集群负载均衡

在这里插入图片描述

在这里插入图片描述

4、配置集群

	#配置上游服务器 weight:数值越小,分匹越少
	upstream tomacts{
		server 192.168.1.110:8080 weight=1;
		server 192.168.1.111:8080 weight=2;
		server 192.168.1.112:8080 weight=5;
	}
	
	 server {
			listen       80;
			server_name  www.tomcats.com;
			location / {
			   proxy_pass http://tomacts
			}
		}		
	 
  • 负载均衡 ip_hash

文档
优点:保证ip相同,访问同一个服务,可以找到会话。
弊端:upstream配置的服务器不能随意移除,可以用upstream指令down来标识。如果服务器数量有变化,会重写计算,导致会话、缓存丢失。
解决办法一致性hash
在这里插入图片描述
示例

upstream backend {
    ip_hash;

    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
    server backend4.example.com;
}
  • 一致性hash算法

在这里插入图片描述
服务器宕机或者新增服务时,只影响附近(顺时针)一部分用户

  • url_hash

在这里插入图片描述

  • 最少连接数

在这里插入图片描述

5、jmeter介绍测试并发异常率

6、upstream 参数介绍

文档

参数说明
max_conns默认是0,限制服务器连接数,如果工作进程数(worker_processes)大于1,会导致超过max值
slow_start慢启动,会把权重慢慢增加到设置值 默认关闭,适用于集群,配置权重,具体细节查看文档 (商业版本)
down不可用状态,配置之后不能访问
backup备用机,其他机器都宕机,会启用
max_fails最大失败次数,当server达到最大失败次数,nginx会踢出 结合fail_tails使用
fail_timeout失败时间段.max_fails=2 fail_timeout = 15s 失败2次后,15s内不在访问。

举例:

upstream tomacts{
		server 192.168.1.110:8080 max_conns =2;
		server 192.168.1.111:8080 weight=6 slow_start=60S;#商业版本才可以
		server 192.168.1.112:8080;
	}
	
	server {
			listen       80;
			server_name  www.tomcats.com;
			location / {
			   proxy_pass http://tomacts
			}
		}	

7、keepalive配置

文档

upstream http_backend {
    server 127.0.0.1:8080;

    keepalive 32;#保持连接数,部分链接作为长连接,减少创建,关闭。可以增大吞吐量
}

server {
    ...

    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;#长连接版本号
        proxy_set_header Connection "";#清除connetion内容为空
        ...
    }
}

8、缓存

静态资源文件
在这里插入图片描述

  1. 浏览器缓存:
    加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
  2. Nginx缓存
    缓存在nginx端,提升所有访问到nginx这一端的用户 提升访问上游(upstream)服务器的速度 用户访问仍然会产生请求流量
    控制浏览器缓存:
location /files {
     alias /home/imooc;
     # expires 10s; 设置秒数     
     # expires @22h30m; 晚上10点半    
     # expires -1h; 时间之前过期 前一小时已经过期 no-cache    
     # expires epoch;不设置cache no-cache    
     # expires off; 默认,nginx没有设置,但浏览器会有,默认浏览器缓存机制    
     expires max; 永不过期
     } 
    

效果说明:
在这里插入图片描述

  • 上游存到nginx端
#proxy_cache_path 设置缓存保存的目录
	#keys_zone 设置共享内存及占用空间大小
	#max_size 设置缓存大小
	#inactive 超过此时间,则缓存自动清理
	#use_temp_path 关闭临时目录
	proxy_cache_path /usr/local/nginx/upsteam_cache keys_zone=mycache:5m max_size=1g inactive=8h use_temp_path=off;
	
		server {
			listen       80;
			server_name  www.tomcats.com;
			#开启并且使用缓存
			proxy_cache mycache
			#针对200304状态码的缓存设置过期时间
			proxy_cache_valid 200 304 8h
			location / {
			   proxy_pass http://tomacts
			}
		}

9、配置https域名证书

1. 安装SSL模块
要在nginx中配置https,就必须安装ssl模块,也就是: http_ssl_module 。

  • 进入到nginx的解压目录: /home/software/nginx-1.16.1
  • 新增ssl模块(原来的那些模块需要保留)
./configure \
 --prefix=/usr/local/nginx \ 
 --pid-path=/var/run/nginx/nginx.pid \
 --lock-path=/var/lock/nginx.lock \ 
 --error-log-path=/var/log/nginx/error.log \ 
 --http-log-path=/var/log/nginx/access.log \ 
 --with-http_gzip_static_module \ 
 --http-client-body-temp-path=/var/temp/nginx/client \ 
 --http-proxy-temp-path=/var/temp/nginx/proxy \ 
 --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ 
 --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ 
 --http-scgi-temp-path=/var/temp/nginx/scgi  \ 
 --with-http_ssl_module 
  • 编译和安装
make 
 
make install 
  • 配置HTTPS
  • 把ssl证书 *.crt 和 私钥 *.key 拷贝到 /usr/local/nginx/conf 目录中。
  • 新增 server 监听 443 端口:
 server {
			listen       443;
			server_name  www.tomcats.com;
		
    # 开启ssl  
    ssl     on;   
    # 配置ssl证书   
    ssl_certificate      1_www.证书相对路径dsp.com_bundle.crt;    
    # 配置证书秘钥   
    ssl_certificate_key  2_www.证书密钥相对路径dsp.com.key; 
    # ssl会话cache    
    ssl_session_cache    shared:SSL:1m;    
    # ssl会话超时时间    
    ssl_session_timeout  5m; 
    # 配置加密套件,写法遵循 openssl 标准     
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    
     ssl_ciphers ECDHE-RSA-AES128-GCMSHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;     
     ssl_prefer_server_ciphers on;          
   	location / {
			   proxy_pass http://tomacts
			}
		}	

10、动静分离

方法一
在这里插入图片描述

方法二
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值