nginx学习笔记

nginx.conf配置结构

在这里插入图片描述

include指定 分文件放置路径

 include /etc/nginx/conf.d/*.conf;

在这里插入图片描述

分文件内容

在这里插入图片描述

切割日志 -手动切割

切割日志

在这里插入图片描述

1.创建 cut_my_log.sh

#!/bin/bash
LOG_PATH="/var/log/nginx/"
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M)
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log

#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`

  1. 赋权限
chmod +x cut_my_log.sh

  1. 手动切割
./cut_my_log.sh

切割日志 -定时切割

在这里插入图片描述
在这里插入图片描述
** 博客 https://www.cnblogs.com/leechenxiang/p/7110382.html**

发布静态资源

代理多个server 资源 -案例

在这里插入图片描述

同时代理前端和静态资源 -案例

前端项目 root为路径 路径; /home/foodie-shop

静态项目 root为路径 路径; /imooc/home

在这里插入图片描述

静态项目 别名的方式设置路径

别名的方式:
alias为路径
location /xx xx为别名在这里插入图片描述

小总结

在这里插入图片描述

root 与 alias 总结

两个效果是一样的

location /imooc {
    root /home
}

alias 起一个别名

location /hello {
    alias /home/imooc
}

在这里插入图片描述

使用Gzip压缩提升请求效率

在这里插入图片描述

总结 location的所有匹配规则

空格: 默认匹配规则
location / {
     root /home;
}

= : 精准匹配
location = /imooc/img/face1.png {
    root /home;
}

在这里插入图片描述

~* : 正则表达式 不区分大小写

演示带星 输入路径 ./PNG -> 转换路径:./png

#符合图片的显示
location ~* .(GIF|jpg|png|jpeg) {
    root /home;
}

在这里插入图片描述

~ : 正则表达式 区分大小写

演示输入路径: ./PNG -> 转换路径:.PNG

	#GIF必须大写才能匹配到
	location ~ .(GIF|jpg|png|jpeg) {
	    root /home;
	}

在这里插入图片描述

^~ 以某个字符路径开头请求
location ^~ /imooc/img {
    root /home;
}

在这里插入图片描述

DNS域名解析 (本地配置域名 )

在这里插入图片描述

使用 SwitchHosts模拟本地域名解析访问(本地配置域名)

window:C:\Windows\System32\drivers\etc\hosts
如果提示没有权限: 看看hosts是否是只读 , 取消只读然后重新启动 SwitchHosts
在这里插入图片描述

Nginx进阶与实战

Nginx跨域

在这里插入图片描述

Nginx解决跨域

在这里插入代码片nginx设置跨域

在相关server模块添加如下配置:

#允许跨域请求的域,*代表所有
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' *;


在这里插入图片描述

在nginx中配置静态资源防盗链

imooc配置,使用这个配置出现主站403

让静态资源只能在设置的域名下可执行否则返回403 错误

#对源站点验证

valid_referers *.linbookz.com;

#非法引入会进入下方判断

if ($invalid_referer) {

    return 403;

}
Nginx的模块化设计解析

在这里插入图片描述

Nginx的集群负载均衡解析

Nginx集群负载均衡
在这里插入图片描述

四层负载均衡
在这里插入图片描述

七层负载均衡
在这里插入图片描述

DNS 地域负载均衡
在这里插入图片描述

OSI网络模型
在这里插入图片描述

Nginx构建tomcat集群

在这里插入图片描述

upstream tomcats{。。。。。}就是一个集群

proxy_pass 是通过的意思

在这里插入图片描述

使用JMeter测试单节点与集群的并发异常率

下载
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

负载均衡之轮训

负载均衡之轮训

● 负载均衡——轮询

● 优点

● 负载均衡——轮询

    三台服务器,按照第一台,第二台,第三台,依次循环

负载均衡中最简单的;

也是默认的一种机制;

Nginx不会去管服务器的硬件性质,只会将请求平均的分配到每一台集群服务器上;
在这里插入图片描述

负载均衡之权重 (加权轮训 weight=xx)

weight 数值越大,权重越大,分配到的服务越多。

负载均衡策略

加权轮询:

upstream tomcats{

     server ip:code weight =1;

    server ip:code weight =3;

}

数值越大,权重越大,分配到的服务越多。

在这里插入图片描述
在这里插入图片描述

upstream的指令参数

在这里插入图片描述
● upstream之指令参数 网址:http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html

  • upstream 指令参数
  • max_counts 限制服务器连接的最大链接数,默认为0没有限制.
  • slow_start 缓慢的开始,能监控流量。
  • down 标识服务器状态标志位down就访问不了了。
  • backup 备份的意思主服务器不行了才能轮到它。
  • max_fails 最大的失败次数,达到一定的阈值之后就会认为服务器宕机。
  • fail_timeout 失败的时间段。
upstream的指令参数 之max_conns

upstream指令参数
max_conns:配置上游服务器最大连接数,默认值为0
在这里插入图片描述

# worker进程设置1个,便于测试观察成功的连接数
worker_processes  1;

upstream tomcats {
        server 192.168.1.173:8080 max_conns=2;
        server 192.168.1.174:8080 max_conns=2;
        server 192.168.1.175:8080 max_conns=2;
}

upstream的指令参数 之slow_start

在这里插入图片描述

upstream tomcats {
        server 192.168.1.173:8080 weight=6 slow_start=60s;
#       server 192.168.1.190:8080;
        server 192.168.1.174:8080 weight=2;
        server 192.168.1.175:8080 weight=2;
}

在这里插入图片描述

upstream的指令参数 之dwon

down 标识服务器状态为不可用状态, 配置为down之后,就不可用了
down 用于标记服务节点不可用;

在这里插入图片描述

upstream的指令参数 之backup

backup 标识当前服务器节点是备用机,只有在气头的服务器都宕机以后,自己才会加入到集群中,被用户访问到;
注: backup参数不能使用hash和random load balancing中

在这里插入图片描述

upstream的指令参数 之max_fails、 fail_timeout
  • max_fails:表示失败几次,则标记server已宕机,剔除上游服务。
  • fail_timeout: 表示失败的重试时间。

则表示在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机了,随后15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒后会再有新请求尝试连接挂掉的server,如果还是失败,重复上一过程,直到恢复。

max_fails=2 fail_timeout=15s 

在这里插入图片描述

在这里插入图片描述

使用Keepalive提高吞吐量

● keepalive 网址:http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

  • keepalive: 设置长连接处理的数量

  • proxy_http_version: 设置长连接http版本为1.1 (1.1 版本支持长连接 )

  • proxy_set_header Connetction “” : 清楚connection header信息(请求请求头信息,提高解析请求效率 )
    在这里插入图片描述

负载均衡之 ip_hash
  • ip_hash 可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户ip没有发生更改。
  • 使用ip_hash的注意点:
  • 不能把后台服务器直接移除,只能标记down
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
负载均衡原理 - url hash 与 least_conn

负载均衡原理 - url hash

扩展:
     假设在某一个业务(相对于某一url来说),这个业务方法的并发量特别大;
     就可以将这台服务器的tomcat替换成 nginx,在做一个基于 该ul的集群就可以了

在这里插入图片描述

在这里插入图片描述

负载均衡原理 - least_conn
在这里插入图片描述
在这里插入图片描述

源码

upstream tomcats {
    # url hash
    hash $request_uri;
    # 最少连接数
    # least_conn

    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}


server {
    listen 80;
    server_name www.tomcats.com;

    location / {
        proxy_pass  http://tomcats;
    }
}

Nginx缓存

在这里插入图片描述

nginx控制浏览器缓存

304代表的是缓存,服务端文件文件时间没有变化,则取缓存,(浏览器是会观察文件的最后修改时间)

● expires指令

◆    expires[time]    —— 缓存多长时间到期

◆    expires @[time]    —— 一天为单位,指定时间点到期,例如 expires @22h30m  到每天的22点30分

◆    expires -[time]    ——提前过期   例如 -1h 提前过期,相当于手动清除缓存

◆    expires epoch      ——不设置缓存

◆    expires  off    ——关闭缓存,使用浏览器默认的缓存机制,体现在浏览器方位在headers中没有cache

◆     expires  max 好多年,效果类似永不过期

定义:
在这里插入图片描述

源码:

location /files {
    alias /home/imooc;
    # expires 10s;
    # expires @22h30m;
    # expires -1h;
    # expires epoch;
    # expires off;
    expires max;
}

在这里插入图片描述

nginx的反向代理缓存

设置反向代理缓存 定义

  • proxy_cache_path /usr/local/resources/nginx-1.16.1/upstream_cache keys_zone=mycache:5mmax_zise=512m inactive=30s use_temp_path=off
  • proxy_cache_path 设置缓存路径
  • keys_zone 设置共享内存及占用空间大小
  • max_size 设置最大缓存大小
  • inactive 超时时间,超出此时间则缓存自动清理
  • use_temp_path 关闭临时目录

源码:

# 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;

location / {
    proxy_pass  http://tomcats;

    # 启用缓存,和keys_zone一致
    proxy_cache mycache;
    # 针对200和304状态码缓存时间为8小时
    proxy_cache_valid   200 304 8h;
}

在这里插入图片描述

使用Nginx配置SSL证书提供HTTPS访问

下载SSL证书秘钥

腾讯云官网路径:https://console.cloud.tencent.com/ssl

腾讯云配置https

ssl证书

免费证书只对一级域名有用

1、nginx加载ssl模块 make install

2、监听端口443

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过

1、传输加密和

2、身份认证

保证了传输过程的安全性  。

主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护

在这里插入图片描述

将文件上传到 conf同级目录

在这里插入图片描述

listen: 433 默认端口
443端口代表https,https在实际用途中很多,苹果app审核等,nginx需要key和ssl证书,以及相关开启配置。

使用Nginx配置HTTPS域名证书(安装)

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

2. 配置HTTPS

在这里插入图片描述

server {
    listen       443;
    server_name  www.linbookz.com;

    # 开启ssl
    ssl     on;
    # 配置ssl证书
    ssl_certificate      linbookz.com_bundle.crt;
    # 配置证书秘钥
    ssl_certificate_key  linbookz.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-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    
    location / {
        proxy_pass http://tomcats/;
        index  index.html index.htm;
    }
 }

3. reload nginx

在这里插入图片描述

./nginx -s reload

动静分离的那些事儿

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结(案例)

部署Nginx到云端 - 安装Nginx

  • 1.去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本

  • 2.上传nginx到linux系统

  • 3.安装依赖环境
    (1)安装gcc环境

    yum install gcc-c++
    

    (2)安装PCRE库,用于解析正则表达式

     ```
     yum install -y pcre pcre-devel
     ```
    

    (3)zlib压缩和解压缩依赖,

    yum install -y zlib zlib-devel
    

    (4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https

    	yum install -y openssl openssl-devel
    
  • 4.解压,需要注意,解压后得到的是源码,源码需要编译后才能安装

    tar -zxvf nginx-1.16.1.tar.gz
    
  • 5.编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错

    mkdir /var/temp/nginx -p
    
  • 6.在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件

    ./configure \n    --prefix=/usr/local/nginx \n    --pid-path=/var/run/nginx/nginx.pid \n    --lock-path=/var/lock/nginx.lock \n    --error-log-path=/var/log/nginx/error.log \n    --http-log-path=/var/log/nginx/access.log \n    --with-http_gzip_static_module \n    --http-client-body-temp-path=/var/temp/nginx/client \n    --http-proxy-temp-path=/var/temp/nginx/proxy \n    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \n    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \n    --http-scgi-temp-path=/var/temp/nginx/scgi
    
    • 注: 代表在命令行中换行,用于提高可读性
    • 配置命令:

在这里插入图片描述

  • 7.make编译

    make
    
  • 8.安装

    make install 
    
  • 9.进入sbin目录启动nginx

    ./nginx 
    
    • 停止:./nginx -s stop
    • 重新加载:./nginx -s reload
  • 10.打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,显示如下便表示安装成功:

注意事项:
1. 如果在云服务器安装,需要开启默认的nginx端口:80
2. 如果在虚拟机安装,需要关闭防火墙
3. 本地win或mac需要关闭防火

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值