栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx 学习笔记总结(三)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx 学习笔记总结(三)

文章目录

1. 在nginx中配置静态资源防盗链2. Nginx的模块化体系3. 四层和七层负载均衡4. 使用JMeter测试集群的并发异常率

4.1 Jmeter介绍4.2 Jmeter的使用 5. 负载均衡的实现

5.1 负载均衡 轮询5.2 负载均衡 加权轮询5.3 upstream指令参数5.4 使用keepalived提高吞吐量5.5 负载均衡 ip_hash5.6 负载均衡 url_hash5.7 负载均衡 least_conn 6. Nginx控制浏览器缓存7. Nginx反向代理缓存8. 使用Nginx配置SSL证书提供HTTPS访问

8.1 SSL证书的获取8.2 使用Nginx配置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-devel3.zlib压缩和解压缩依赖:yum install -y zlib zlib-devel4.SSL安装的加密的套接字协议层,用户HTTP安全传输,也就是https:yum install -y openssl openssl-devel 11. Nginx云端实现动静分离


第一步:动静分离很简单,将所有的前端静态资源项目放到一个目录中,这里放到了/website/fooie-shop下。

第二步:然后,配置虚拟主机作为静态资源服务器,来进行接收访问:

12. Nginx查看日志使用tail命令

我们查看日志通常使用vim命令,但是这个vim是打开全部日志,这样查看日志很麻烦。可以通过tail命令来查看,会从最后往上一段时间看。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号