Nginx 学习笔记总结
Posted IT_Holmes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 学习笔记总结相关的知识,希望对你有一定的参考价值。
文章目录
- 1. 在nginx中配置静态资源防盗链
- 2. Nginx的模块化体系
- 3. 四层和七层负载均衡
- 4. 使用JMeter测试集群的并发异常率
- 5. 负载均衡的实现
- 6. Nginx控制浏览器缓存
- 7. Nginx反向代理缓存
- 8. 使用Nginx配置SSL证书提供HTTPS访问
- 9. Nginx 之 动静分离
- 10. Nginx需要安装的依赖环境
- 11. Nginx云端实现动静分离
- 12. Nginx查看日志使用tail命令
1. 在nginx中配置静态资源防盗链
如果不想让其它网页来访问到我们的nginx服务器,我们可以配置防盗链的效果。
server
listen 89;
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 *.itholmes.com;
#非法引入会进入下方判断
if ($invalid_referer)
return 404;
# 如果上面匹配成功,就会走下面的location映射去;如果不匹配的话,就会返回404。
location ^~ /static/img
root /opt;
当通过别的域名来访问进来时,就会拿不到数据了。
2. Nginx的模块化体系
3. 四层和七层负载均衡
首先,集群的效果是1+1大于2的效果。
(一般四层负载均衡是转发请求返回响应的。而七层的负载均衡是一般是处理请求响应的。)
注意:proxy_pass代理转发指令作用!
4. 使用JMeter测试集群的并发异常率
4.1 Jmeter介绍
Jmeter是一个性能测试工具,可以在apache官方上面看到:https://jmeter.apache.org/download_jmeter.cgi
4.2 Jmeter的使用
启动jmeter,双击jmeter.bat文件。
先创建一个线程组:
定义好线程数量(其实这里的线程数量就是用户的数量):
在线程组里面添加http请求:(注意Sampler取样器)
添加Listener监听器:
开始测试和清除测试信息:
5. 负载均衡的实现
5.1 负载均衡 轮询
轮询是nginx默认的一种策略,如果不设置weight那么默认都是1,也就是轮询。
5.2 负载均衡 加权轮询
5.3 upstream指令参数
max_conns参数:每一台服务器的最大连接数。使用此参数,记得看nginx.conf的worker_processes是否为1。使用单个工作进程,就不会使用到共享内存。
slow_start:使服务器在指定时间内慢慢启动。(注意:此参数在商业版nginx才有效)
down:告知nginx此集群中的这台server服务器已经不可用。
backup:备份server服务器。当集群中的其他服务器全部宕机时,会启用设置了backup参数的服务器。平常状态不启用
max_fails和fail_timeout:最大失败次数和失败时间段, max_fails次失败后,暂停fail_timeout时间。
5.4 使用keepalived提高吞吐量
Jmeter查看吞吐量。
keepalive配置:定义最大长连接的数量。长连接的好处就是大大减少了连接的创建维护损耗等情况。
因为nginx默认http协议是1.0,1.0长连接目前是不适用的。因此要在虚拟主机location中设置proxy_http_version 1.1;版本,要设定http协议版本为1.1才可以。
proxy_set_header Connection “”;1.1不需要,所以清空Connection响应头。
5.5 负载均衡 ip_hash
对于不同的ip根据hash算法求模,从而访问不同的服务器。
ip_hash指定服务器,它是有一个hash算法的,通过hash算法取模来获取对应服务器的索引。
配置就是在upstream中添加一个ip_hash参数就可以了。
我们可以在原来的源码包中,获取它的ip_hash源码。首先,进入nginx-1.20.2/src/http/modules的目录下:
一致性哈希算法大体流程:
5.6 负载均衡 url_hash
url_hash算法:
5.7 负载均衡 least_conn
least_conn算法:
6. Nginx控制浏览器缓存
我们要实现的是前半部分,缓存到浏览器。
缓存设置是在location指令模块下配置,学习下面的内容要注意响应头的cache-control响应头。
通过expires [time]指令,设置过期时间:
浏览器端可以看到一些响应头中的信息,过期时间等:
expires @[time] 指令:这个指令是设置指定时间。@22h30m就是22点30分过期。
expires -[time] 指令:负号代表已经过期了
expires epoch指令:也就是nocache,没有缓存。
expires off指令:不设置缓存,缓存机制就使用浏览器默认的。
expires max指令:设置一个最长最大的过期时间。
7. Nginx反向代理缓存
具体配置见下图:
8. 使用Nginx配置SSL证书提供HTTPS访问
8.1 SSL证书的获取
https是安全的!
现在很多网站如果不是https的话,审核不通过的!
SSL(Secure Sockets Layer)证书,中文含义为安全套接层。
首先,需要有一个域名,我们可以在自己不同的云服务器上面使用免费的SSL证书,然后下载就可以。
(别忘记配置对应域名和提交基本信息。)
拿到对应的SSL证书。
下载拿到的文件解压后,发送到我们的云服务器上面去:
8.2 使用Nginx配置Https域名证书
之后在就是在nginx中使用这两个文件(证书和秘钥)。
第一步:安装SSL模块。
要在nginx中配置https,就必须安装ssl模块,也就是:http_ssl_module。
- 进入到我们nginx的解压目录下面,执行./configure --with-http_ssl_module命令,新增ssl模块。
- 之后在进行make编译和make install安装。
第二步:修改nginx.conf配置文件,配置HTTPS。
这里有个端口对应http协议默认对应端口是80,https默认对应端口是443。
# 配置https
server
# https默认是443
listen 443 ssl;
server_name localhost;
# 开启ssl
# ssl on; 这里经过说ssl指示已经弃用了。用上面ssl方式。
# 配置ssl证书,注意这里我们的证书和秘钥和nginx.conf文件同级目录下,因此直接使用名字。
ssl_certificate 7336736_www.itholmes.top.pem;
# 配置证书秘钥
ssl_certificate_key 7336736_www.itholmes.top.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-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /
proxy_pass http://itholmes/;
index index.html index.htm;
配置好后,重新reload一下nginx。这样我们的ssl就配置完成。
还是要注意云端服务器要开启443端口才可以!
最后,最好是重启一下nginx服务器,让443端口能够被master进程监听到!
9. Nginx 之 动静分离
动静分离就是静态数据和动态数据分离开来。
- 静态数据:css/js/html/images/audios/videos … 等静态资源。
- 动态数据:得到的响应可能会和上一次不同。
动静分离的方式CDN:
cdn加速服务是内容分发网络(Content Delivery Network,CDN),这些cdn服务器提供的都是第三方要使用的静态资源。
动静分离的方式Nginx
一般服务器有二级域名之类的,例如:api.itholmes.com专门掉接口的域名等等。
静态资源:
- 直接放到nginx服务器中,用户请求直接在nginx服务器上面发送。
- 也可以在upstream里面引入多台服务器,这几台服务器专门用于处理静态资源。(也就是静态资源服务器的集群效果)
动态数据:
- 对于动态数据的一些操作参数,那就直接通过server和upstream走进专门业务的tomcat服务器集群就可以。
动静分离的问题:
- 跨域问题(解决办法:SpringBoot和Nginx支持跨域,jsonp形式接受)。
- 分布式会话,保证用户一直是同一个用户操作(解决办法:分布式缓存中间件Redis)
10. Nginx需要安装的依赖环境
安装nginx需要依赖的环境:
- 1.安装gcc环境:yum install gcc-c++
- 2.安装pcre库,用于解析正则表达式:yum install pcre pcre-devel
- 3.zlib压缩和解压缩依赖:yum install -y zlib zlib-devel
- 4.SSL安装的加密的套接字协议层,用户HTTP安全传输,也就是https:yum install -y openssl openssl-devel
11. Nginx云端实现动静分离
第一步:动静分离很简单,将所有的前端静态资源项目放到一个目录中,这里放到了/website/fooie-shop下。
第二步:然后,配置虚拟主机作为静态资源服务器,来进行接收访问:
12. Nginx查看日志使用tail命令
我们查看日志通常使用vim命令,但是这个vim是打开全部日志,这样查看日志很麻烦。可以通过tail命令来查看,会从最后往上一段时间看。
以上是关于Nginx 学习笔记总结的主要内容,如果未能解决你的问题,请参考以下文章