陶辉老师讲的真的很好,在这里针对每一集很有用的地方做下笔记。
安装之后启动 nginx 后记得服务器开启 80 端口,或者关闭防火墙,否则无法访问
02.Nginx 适用于哪些场景?
04.为什么用 Nginx:它的 5 个主要优点
05.Nginx 的四个主要组成部分
07.选择哪一个 Nginx 发行版本?
开源版:nginx.org
商业版:nginx.com
阿里巴巴:Tengine:http://tengine.taobao.org/
OPenResty:原阿里巴巴工程师,章亦春:http://openresty.org/cn/
08.编译出适合自己的 Nginx:
下载 Nginx: http://nginx.org/en/download.html
版本选择:
1:Mainline version:最新版本 (包含最新功能)
2:Stable version :稳定版本 (推荐使用,稳定)
#下载
wget http://nginx.org/download/nginx-1.16.1.tar.gz
#解压
tar -xzf nginx-1.16.1.tar.gz
#进入
cd nginx-1.16.1
查看 Nginx 编译支持的参数:
./configure --help | more
开始编译 Nginx:
#指定目录安装,可以添加模块在此步骤
./configure --prefix=/usr/local/nginx && make && make install
#编译完成安装后会产生很多中间文件在目录 objs 下所示,所有安装的模块均在 ngx_modules.c 文件中
--with 需要主动附加,--without 为默认会编译
利用 contrib 配置 vim 语法高亮提示:
#在 nginx 源文件夹目录
cp -r contrib/vim/* /usr/share/vim/vimfiles/
#如果不知道自己的vimfiles文件夹位置,可以使用如下命令查看
find / -name vimfiles
输出:/usr/share/vim/vimfiles
09.Nginx 配置文件的通用语法介绍
10.Nginx 命令行及演示:重载、热部署、日志切割
11.用 Nginx 搭建一个可用的静态资源 Web 服务器
location {
alias
root
}
区别:alias:以使用alias路径替换location路径 ,root :root路径+location路径
以目录结构分享给用户,比如各程序版本下载页面,以方便共享静态文件资源:
location / {
autoindex on;
#设置用户访问最大速度
set $limit_rate 1k;
}
关于自定义日志格式,可以在 http 模块中使用
http {
#定义
log_format main '变量-';
server {
access_log log/logs.log main;
}
}
内置变量: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_status
12.用 Nginx 搭建一个具备缓存功能的反向代理服务,都在一台服务器演示
主服务器配置:
从服务器配置,使用的是 OpenResty:
从服务器配置讲解:
#定义后端服务器的请求头
proxy_set_header Host $host;
#拿到真实 IP
proxy_set_header X-Real-IP $remote_addr;
#获取客户端真实信息相关配置
proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
13.用 GoAccess 实现可视化并实时监控 access 日志
https://goaccess.io/
#安装后在日志目录下执行
#/var/www/html/report.html 为web目录
goaccess access.log -o ../html/report.html --log-format=COMBINED --real-time-html
#然后在 server 中
server {
location /report.html {
#同上目录
alias /var/www/html/report.html;
}
}
然后访问指定网址即可
接下来的几节将证书,安装证书日志在这里:
https://blog.csdn.net/myarche/article/details/103628289
总体第二大节 第二章:Nginx架构基础 理论知识丰富,这里不做日志记录。
第三章:详解HTTP模块:
43.冲突的配置指令以谁为准?
44.Listen指令的用法
46.Nginx中的正则表达式
linux 下可以安装 pcretest 来进行模拟测试匹配
47.如何找到处理请求的server指令块
50.postread阶段:获取真实客户端地址的realip模块
51.rewrite阶段的rewrite模块:return指令
return 指令先于 error_page 并且 return 按照先后顺数优先执行,类似于 php 函数的 return
52.rewrite阶段的rewrite模块:重写URL
53.rewrite阶段的rewrite模块:条件判断
54.find_config阶段:找到处理请求的location指令块
55.preaccess阶段:对连接做限制的limit_conn模块
在这里测试了以使用 cloudfalre cdn 为代理,然后获取用户真实 IP 并限制并发数量:
#IP 地址为 cloudflare 的全球地址段
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_recursive on;
real_ip_header X-Forwarded-For;
#然后输出真实 IP 地址
return 200 "The real IP is $remote_addr";
#然后就可以正常的进行限速限制线程了
56.preaccess阶段:对请求做限制的limit_req模块
57.access阶段:对ip做限制的access模块
58.access阶段:对用户名密码做限制的auth_basic模块
61.precontent阶段:按序访问资源的try_files模块
使用反向代理时,先用访问代理服务器的文件不存在时,在访问上游服务器的资源
65.static模块对url不以斜杠结尾却访问目录的做法
以 html 有一个 first 文件夹,然后 curl dmain/first 为测试进行以下设置
66.index和autoindex模块的用法
70.用过滤模块更改响应中的字符串:sub模块
71.用过滤模块在http响应的前后添加内容:addition模块
75.使用变量防盗链的referer模块
76.使用变量实现防盗链功能实践:secure_link模块
83.负载均衡策略:round-robin
http {
include mime.types;
default_type application/octet-stream;
include vhost/*;
upstream rrups {
server 127.0.0.1:8011 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
server 127.0.0.1:8012;
keepalive 32;
}
server {
listen 80;
server_name localhost;
location /{
proxy_pass http://rrups;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
}
#被 include 的内容
server {
listen 8011;
#server_name localhost;
default_type text/plain;
return 200 '8011 server reponse.\n';
}
server {
listen 8012;
#server_name localhost;
default_type text/plain;
return 200 '8012 server reponse.\n';
}
84.负载均衡哈希算法:ip_hash与hash模块