一、nginx特性
1、IO
2、轻量级
3、CPU亲和(affinity)
cpu亲和:是一种把CPU核心和nginx工作进程绑定方式,把每个worker进程固定在一个cpu上执行,减少切换的cachemiss,获得良好的性能。
4、sendfile
处理静态文件效率很高,因为他的传输机制是:sendfile。
对比之前httpserver的传输文件。httpserver传输机制
文件--》操作系统内核空间-->用户空间--》socket;响应给用户。 发生多次切换
文件 其实不需要经过用户空间(处理逻辑),直接就可以通过内核空间传输。sendfile就是只通过内核空间 进行传输。
二、nginx快速搭建
参考官方文档介绍
三、nginx的目录和配置语法
基础参数使用
省略
四、Http请求
请求报文:
request- 包括请求行、请求头部、请求数据
response-包括状态行、消息报头、响应正文
下面来查询一下一次请求的内容信息。curl -v http://www.imooc.com
[root@localhost conf]# curl -v http://www.imooc.com
* About to connect() to www.imooc.com port 80 (#0)
* Trying 117.121.101.40...
* Connected to www.imooc.com (117.121.101.40) port 80 (#0)
> GET / HTTP/1.1 //... >发起request请求 请求方式,请求协议
> User-Agent: curl/7.29.0 //... request请求的head内容
> Host: www.imooc.com
> Accept: */*
> //... < response 服务端响应的内容
< HTTP/1.1 301 Moved Permanently // 301 响应的状态
< Server: nginx
< Date: Mon, 14 May 2018 08:38:35 GMT
< Content-Type: text/html
< Content-Length: 178
< Connection: keep-alive
< Location: https://www.imooc.com
<
301 Moved Permanently
301 Moved Permanently
nginx
* Connection #0 to host www.imooc.com left intact
五、nginx日志类型
暂且省略,参考官网
六、nginx模块讲解
1. nginx官方模块
http_stub_status_module
random_index_module
Syntax:random_index on | off;
Default:random_index off;
Context:location
http_sub_module :http内容替换 (有多个语法)
Syntax:sub_filter string replacement;
Default:-
Context:http,server,location
2.第三方模块
七、nginx的请求限制
连接频率限制 : limit_conn_module
请求频率限制 : limit_req_module
1.1连接与请求的原理
建立在TCP协议之上。 TCP三次请求之后,才能进行http之间连接请求。最后在通过客户端与服务端之间第三方包来回传输。
HTTP请求建立在一次TCP连接基础上
一次TCP请求至少产生一次HTTP请求,当然可以产生多次HTTP请求
1.2 nginx对http请求连接的限制语法
Syntax:limit_conn_zone key zone=name:size;
Default:-
Context:http
Syntax:limit_conn_zone number;
Default:-
Context:http,server,location
1.3请求限制
Syntax:limit_req_zone key zone=name:size rate=rate;
Default:-
Context:http
Syntax:limit_req zone=name [burst=number][nodelay];
Default:-
Context:http,server,location
八、nginx的访问控制
1、实现访问控制的基本方式
基于IP的访问控制 http_access_module
基于用户的信任登录 http_auth_basic_module
2、http_access_module
Syntax:allow address|CIDR|unix:|all;
Default:-
Context:http,server,location,limit_except
Syntax:deny address|CIDR|unix:|all;
Default:-
Context:http,server,location,limit_except
http_access_module 配置
http_access_module 局限性
只能通过remote_addr来信任。
优化
3、http_x_forwarded_for
记录过程和ip地址
http_x_forwarded_for=ClientIP,Proxy(1)IP,Proxy(2)IP... ...
4、http_access_module局限性
方法一、采用别的HTTP信息控制访问,如:HTTP_X_FORWARD_FOR
方法二、结合geo模块作(后面详细记录)
方法三、通过HTTP自定义变量传递