学习Nginx 核心100讲的日志

陶辉老师讲的真的很好,在这里针对每一集很有用的地方做下笔记。

安装之后启动 nginx 后记得服务器开启 80 端口,或者关闭防火墙,否则无法访问

02.Nginx 适用于哪些场景?

学习Nginx 核心100讲的日志_第1张图片

 04.为什么用 Nginx:它的 5 个主要优点

学习Nginx 核心100讲的日志_第2张图片

05.Nginx 的四个主要组成部分

学习Nginx 核心100讲的日志_第3张图片 06.Nginx 的版本发布历史

 07.选择哪一个 Nginx 发行版本?

开源版:nginx.org

商业版:nginx.com

阿里巴巴:Tengine:http://tengine.taobao.org/

OPenResty:原阿里巴巴工程师,章亦春:http://openresty.org/cn/

08.编译出适合自己的 Nginx:

学习Nginx 核心100讲的日志_第4张图片

下载 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 核心100讲的日志_第5张图片

 查看 Nginx 编译支持的参数:

./configure --help | more

 开始编译 Nginx:

#指定目录安装,可以添加模块在此步骤

./configure --prefix=/usr/local/nginx && make && make install

#编译完成安装后会产生很多中间文件在目录 objs 下所示,所有安装的模块均在 ngx_modules.c 文件中

学习Nginx 核心100讲的日志_第6张图片

--with 需要主动附加,--without 为默认会编译 

 利用 contrib 配置 vim 语法高亮提示:


#在 nginx 源文件夹目录

cp -r contrib/vim/* /usr/share/vim/vimfiles/

#如果不知道自己的vimfiles文件夹位置,可以使用如下命令查看

find / -name vimfiles

输出:/usr/share/vim/vimfiles

09.Nginx 配置文件的通用语法介绍

学习Nginx 核心100讲的日志_第7张图片

学习Nginx 核心100讲的日志_第8张图片

学习Nginx 核心100讲的日志_第9张图片

学习Nginx 核心100讲的日志_第10张图片

 10.Nginx 命令行及演示:重载、热部署、日志切割

学习Nginx 核心100讲的日志_第11张图片

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 搭建一个具备缓存功能的反向代理服务,都在一台服务器演示

主服务器配置:

学习Nginx 核心100讲的日志_第12张图片

从服务器配置,使用的是 OpenResty:

学习Nginx 核心100讲的日志_第13张图片

 从服务器配置讲解:

#定义后端服务器的请求头
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.冲突的配置指令以谁为准?

学习Nginx 核心100讲的日志_第14张图片

学习Nginx 核心100讲的日志_第15张图片

 

 

44.Listen指令的用法

学习Nginx 核心100讲的日志_第16张图片

 46.Nginx中的正则表达式

学习Nginx 核心100讲的日志_第17张图片

 学习Nginx 核心100讲的日志_第18张图片

 linux 下可以安装 pcretest 来进行模拟测试匹配

47.如何找到处理请求的server指令块

学习Nginx 核心100讲的日志_第19张图片

 学习Nginx 核心100讲的日志_第20张图片

学习Nginx 核心100讲的日志_第21张图片 50.postread阶段:获取真实客户端地址的realip模块

学习Nginx 核心100讲的日志_第22张图片

 学习Nginx 核心100讲的日志_第23张图片

学习Nginx 核心100讲的日志_第24张图片

51.rewrite阶段的rewrite模块:return指令

学习Nginx 核心100讲的日志_第25张图片

学习Nginx 核心100讲的日志_第26张图片

 return 指令先于 error_page 并且 return 按照先后顺数优先执行,类似于 php 函数的 return

学习Nginx 核心100讲的日志_第27张图片

52.rewrite阶段的rewrite模块:重写URL

 学习Nginx 核心100讲的日志_第28张图片

学习Nginx 核心100讲的日志_第29张图片

 53.rewrite阶段的rewrite模块:条件判断

学习Nginx 核心100讲的日志_第30张图片

学习Nginx 核心100讲的日志_第31张图片 54.find_config阶段:找到处理请求的location指令块

学习Nginx 核心100讲的日志_第32张图片

 55.preaccess阶段:对连接做限制的limit_conn模块

学习Nginx 核心100讲的日志_第33张图片

学习Nginx 核心100讲的日志_第34张图片

学习Nginx 核心100讲的日志_第35张图片

学习Nginx 核心100讲的日志_第36张图片

 在这里测试了以使用 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模块

学习Nginx 核心100讲的日志_第37张图片

学习Nginx 核心100讲的日志_第38张图片

57.access阶段:对ip做限制的access模块

 学习Nginx 核心100讲的日志_第39张图片学习Nginx 核心100讲的日志_第40张图片

58.access阶段:对用户名密码做限制的auth_basic模块
 学习Nginx 核心100讲的日志_第41张图片

学习Nginx 核心100讲的日志_第42张图片

学习Nginx 核心100讲的日志_第43张图片

学习Nginx 核心100讲的日志_第44张图片 61.precontent阶段:按序访问资源的try_files模块

使用反向代理时,先用访问代理服务器的文件不存在时,在访问上游服务器的资源

学习Nginx 核心100讲的日志_第45张图片

学习Nginx 核心100讲的日志_第46张图片 63.content阶段:详解root和alias指令

学习Nginx 核心100讲的日志_第47张图片

学习Nginx 核心100讲的日志_第48张图片 64.static模块提供的3个变量

学习Nginx 核心100讲的日志_第49张图片

 学习Nginx 核心100讲的日志_第50张图片

 65.static模块对url不以斜杠结尾却访问目录的做法

学习Nginx 核心100讲的日志_第51张图片

 以 html  有一个 first 文件夹,然后 curl dmain/first 为测试进行以下设置

学习Nginx 核心100讲的日志_第52张图片

 66.index和autoindex模块的用法

学习Nginx 核心100讲的日志_第53张图片

 

 学习Nginx 核心100讲的日志_第54张图片

学习Nginx 核心100讲的日志_第55张图片

学习Nginx 核心100讲的日志_第56张图片68.access日志的详细用法

学习Nginx 核心100讲的日志_第57张图片

学习Nginx 核心100讲的日志_第58张图片

70.用过滤模块更改响应中的字符串:sub模块

学习Nginx 核心100讲的日志_第59张图片

 学习Nginx 核心100讲的日志_第60张图片

 71.用过滤模块在http响应的前后添加内容:addition模块

学习Nginx 核心100讲的日志_第61张图片

学习Nginx 核心100讲的日志_第62张图片 学习Nginx 核心100讲的日志_第63张图片

 73.HTTP框架提供的请求相关的变量

学习Nginx 核心100讲的日志_第64张图片

学习Nginx 核心100讲的日志_第65张图片 学习Nginx 核心100讲的日志_第66张图片

学习Nginx 核心100讲的日志_第67张图片

学习Nginx 核心100讲的日志_第68张图片

学习Nginx 核心100讲的日志_第69张图片 74.HTTP框架提供的其他变量

学习Nginx 核心100讲的日志_第70张图片

学习Nginx 核心100讲的日志_第71张图片 学习Nginx 核心100讲的日志_第72张图片

学习Nginx 核心100讲的日志_第73张图片 学习Nginx 核心100讲的日志_第74张图片

 学习Nginx 核心100讲的日志_第75张图片

75.使用变量防盗链的referer模块

 学习Nginx 核心100讲的日志_第76张图片

学习Nginx 核心100讲的日志_第77张图片

 学习Nginx 核心100讲的日志_第78张图片

学习Nginx 核心100讲的日志_第79张图片 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模块

 

你可能感兴趣的:(nginx,linux)