基础部分

1. 正向代理与反向代理

2. install

3. http,tcp  http协议请求报文与响应报文格式

4. conf  基本配置

5. Nginx 配置优化

6. 中级 重要

7. 模块

8. 高级部分

    zabbix监控Nginx/ELK/日志切割/日志分析/性能指标/故障/模块开发/流量测试/book/安全

9.架构


===================================================================


一.正向代理与反向代理

   http://mp.weixin.qq.com/s/4KKNHWX-NuVP8D43AL8KKw

   正向代理的过程,它隐藏了真实的请求客户端

   反向代理的过程,它隐藏了真实的服务端

二.install

   Web服务器Nginx多方位优化策略 - 运维生存时间

   使用Tengine替代Nginx作为负载均衡服务器

三.http,tcp

   HTTP扫盲及Nginx基础性模块常用指令整理 - gszadc.com

四.conf

   企业级Nginx服务基础到架构优化详解--25条   https://blog.51cto.com/13505030/2067077

五.nginx配置优化

  1.隐藏Nginx header版本号信息  http://renzhiyuan.blog.51cto.com/10433137/1875331

  2.更改Nginx 默认用户及用户组(worker进程服务用户优化)

  3.配置Nginx worker进程个数

  4.根据cpu核数进行Nginx进程优化

  5.调整Nginx worker单个进程允许的客户端最大连接数

  6.配置Nginx worker进程最大打开文件数

  7.开启高效的文件传输模式

  8.设置连接超时时间

  9.上传文件大小限制(动态应用)

  10.Nginx 自定义403页面

  11.记录每个request 花费时间

  12.Nginx服务器的下载限速设置

  13.优化配置服务器域名的散列表大小

  15.优化连接参数,调整超时时间

  16.缓存

  17.配置Gzip压缩功能,以节约带宽

  18.http部分调优: 

  19.Nginx设置Header头信息

  20.GeoIP白名单

  21.status访问控制

  22.负载均衡

      a、RR(默认)              每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

      b、权重                          指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况

      c、ip_hash                     这样每个访客固定访问一个后端服务器,可以解决session的问题

      d、fair(第三方)          按后端服务器的响应时间来分配请求,响应时间短的优先分配。

      e.  url_hash(第三方)  按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

                                            在upstream中加入hash语句,server语句中不能写入weight等其他的参数, hash_method是使用的hash算法

  23.动静分离



六.中级 重要

   1.Nginx事件处理模型优化

   2.Nginx缓存优先级(缓存问题者必看)

      CentOS下为Nginx安装清缓存模块,优化nginx服务器性能

   3.rewrite

   4.lua

   5.Nginx location语法

   6.平滑升级

   7.Nginx实战系列之功能篇----后端节点健康检查

   8.编译参数

   9.如何安装nginx第三方模块  运维生存时间

  10.Nginx下使用$upstream_cache_status来标记缓存命中状态

  11.图片防盗链

  12.安装jemalloc可以增加性能

  13.如果负载时大时小可能有io瓶颈,可以将proxy_cache放到/dev/shm 中来解决

  14.https

       Nginx 的多域名多https转发设置方法    ChinaUnix博客

       nginx.org的Configuring HTTPS servers页面翻译

       Nginx多个二级域名站点的https配置

       带你使用Nginx实现HTTPS双向验证

       解决一次由于SSL证书到期导致的网站不能访问的问题(Nginx,php,Apache)

       两年来的core折腾之路几点总结,附上nginx启用http2拿来即用的配置

       Nginx HTTPS功能部署实践    http://oldboy.blog.51cto.com/2561410/1889346

  15.Nginx 直接返回内容

  16.Nginx 文件下载、预览、防止浏览器下载时直接打开、防止预览时直接下载文件

  17.日志清除

       sed -i '/^10.1.1/d' $log_path/$i/$yesterday/$i.access.log  

       sed -i '/^$/d' $log_path/$i/$yesterday/$i.access.log 

   18.前端Nginx时,让后端tomcat记录真实IP


七.模块

   1.secure_link

       用于下载服务器  

       # 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期

       $md5 = base64_encode(md5($secret . $path . $expire, true));

   2.nginx_upstream_jvm_route    Nginx下安装nginx_upstream_jvm_route模块 _ 快乐成长

   3.nginx-sticky-module

   4.ngx_http_lower_upper_case

      Nginx/Tengine实现网址大小写转换

   5.ngx_http_upstream_check_module

      Nginx/Tengine 根据域名进行健康检查

      check_http_send "HEAD /status.html HTTP/1.1\r\nConnection: keep-alive\r\nHost: healthckeck.sudops.com\r\n\r\n";

    6.http_concat_module

       使用Tengine concat模块合并多个CSS,JS 请求

        ./configure --prefix=/alidata/server/nginx --with-http_concat_module=shared

        make && make dso_install

         dso {

               load ngx_http_concat_module.so;    #加载动态加载模块

              }

    7.Nginx Google代理模块(ngx_http_google_filter_module)

    8.Nginx安装配置防盗链模块nginx-accesskey

    9.日志相关参数官网给的解释是:Module ngx_http_log_module

   10.ngx_headers_more,去除多余的头部信息减小数据传输量

        ngx_headers_more 模块来增加、删除出站、入站的 Header 信息

   11.第三方限速模块nginx Nginx-limit-traffic-rate-module

        该模块是按来路IP限制速度,而不是按连接限制

   12.nginx upload module 上传模块

   13.nginx修改upstream不重启的方法(ngx_http_dyups_module模块)

   14.ngx_http_sysguard_module 系统过载保护

   15.ngx_http_limit_req_module 并发限制模块

   16.nginx记录分析网站响应慢的请求(ngx_http_log_request_speed)

   17.关于Nginx session sticky

   18.Nginx服务器配置Modsecurity实现Web应用防护系统

   19.Tengine模块文档:footer filter模块功能


八.高级部分

     zabbix监控nginx/ELK/日志切割/日志分析/性能指标/故障/模块开发/流量测试/book/安全

   1.zabbix监控nginx

   2.ELK

       ELK系列二:kibana操作及nginx日志分析图表创建

       http://hnr520.blog.51cto.com/4484939/1845900

   3.日志切割


server

if ($time_iso8601 ~ "^(d{4})-(d{2})-(d{2})T(d{2}):(d{2}):(d{2})")

{

set $year1 $1;

set $month1 $2;

set $day1 $3;

set $hour1 $4;

set $minutes1 $5;

set $seconds1 $6;

}

access_log  /opt/log/crm-$year-$month-$day.log;

error_log   /opt/log/crm-$year-$month-$day.error;


    4.日志分析

    5.性能指标

       并发连接数

       客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器链接的总TCP数量,就是并发连接数

       PV(page view)  UV(unique visitor) 独立IP

    6.故障

       1.Nginx Connection 不夠用的参数调整

       2.Nginx+php-fpm出现502

       3.线上Nginx的一次“no live upstreams while connecting to upstream ”分析

       4.Nginx proxy_pass末端神奇的斜线

       5.Nginx+tomcat使用apache的FtpClient上传图片时由于多线程问题导致的文件大小为0的问题


    7.模块开发

        Nginx模块开发入门 CodingLabs

        NGINX-HTTP模块开发 之 验证URL参数 - 推酷

   8.流量测试

       腾讯版TCPCOPY.%20基于真实TCP流量的测试工具 TCPGO

       利用tcpcopy,发现nginx一重大bug

    9.book

       深入理解Nginx:模块开发与架构解析(第2版)

    10.安全

       Nginx 限制url的IP访问

       Nginx防止高负载的解决方案(sysgurad模块) - 运维生存时间

       Nginx下php-fpm防止跨站跨目录安全设置

       漏桶算法和 NGINX 的 limit_req 模块


九.架构 tenginx+keepalived

    搞一个架构图   http://blog.csdn.net/ityouknow/article/details/54374818

1
2
3
4
5
6
7
8
9
location  /   {
       proxy_set_header   X - Forwarded - For $proxy_add_x_forwarded_for; 
             proxy_pass_header Server;
             proxy_set_header Host $http_host;不是host,因为是用端口访问的
             proxy_set_header X - Real - IP $remote_addr;
             proxy_set_header X - Scheme $scheme;
       proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
       proxy_pass http: / / ip: 8080 ;
}



十. 高级部分

   1.Nginx防止ddos***最终版


   2.zabbix监控Nginx


   3.自动化安装Nginx


   4.ELK


   5.python日志分析


   6.深入性能优化


   7.故障分析


   8.原理方面


   9.Docker


   10.四层和七层对比


   11.lua


   12.灰度发布