参考:https://docs.nginx.com/nginx/admin-guide/
 
 
1.nginx plus简介
相较于nginx添加了众多企业特性,如HA,health check,DNS发现,session持久化,
restful API等,是一个云原生、易于使用的反向代理(或负载均衡器和API网关)
特点:
(1)实时监控:DDoS攻击检测,网站error report和性能metrics展示,API支持等
     参考:https://www.nginx.com/products/nginx/live-activity-monitoring
(2)安全升级:现代化的应用安全解决方案,无缝集成节省时间,优于其他的WAF,
               降低系统复杂度,基于成熟的F5应用安全技术,高可信度签名,实现
               极低的误报率,并集成第三方解决方案,如JWT认证等
     参考:https://www.nginx.com/products/nginx-app-protect/
(3)编排k8s容器:NGINX Ingress Controller是Kubernetes和容器化环境中针对云
                  原生应用的一流流量管理解决方案。All-in-One、高性能,可伸缩、
                  安全,CNCF调查显示三分之二受访者使用NGINX Ingress Controller,
                  并且其在DockerHub下载量达千万次。
     参考:https://www.nginx.com/products/nginx-ingress-controller/
 
 
2.安装nginx plus
Nginx plus可以安装在Amazon Linux、CentOS、Debian、FreeBSD、Oracle Linux、RHEL、SLES和Ubuntu。
(1)前提
nginx plus可以申请试用或者直接订阅,
申请试用地址:https://www.nginx.com/free-trial-request  (填写表单提交)
等待几分钟后会收到nginx激活团队的欢迎使用的说明性文件,其中包含配置说明,admin guide
以及support email等link,我是2020-12-28 01:41(GMT)收到的第一封邮件(在表单提交后几分钟内),
邮件标题:Welcome to your free trial of NGINX Plus!
说明:You will soon receive an email from our evaluations team prompting you to activate your trial.
 
第二封激活邮件是2020-12-29 02:39(GMT)收到的,大概等了一天,里面包含激活link,以及安装配置说明。
link是一次性的,点进去accept条款后会跳转到证书和私钥下载page,注意下载也是一次性的。
下载包括:nginx-repo.crt(证书), nginx-repo.key(私钥)
邮件标题:Activate Your NGINX Plus Trial
激活link说明:This link will expire after it is clicked
下载说明:Your certificate and key can be downloaded once
激活后安装手册:
   https://cs.nginx.com/repo_setup  (手动安装说明)
   https://cs.nginx.com/t/xxxxxxxxxxxxxxxxxxxxxxx/otl   (脚本自动安装指引)
上面第二个链接是份脚本安装指令,可以通过该脚本指令直接在centos上安装nginx plus,该脚本附带一个唯一
的hash值(即下面的317ab16e38c0f1ba95d0a79aee63481c),说明其存在hash校验,也即该指令也是一次性的,第二次
使用同一hash值去安装会报证书404 not found error。
脚本安装:
[root@jalen jalen]# mkdir nginx-plus
[root@jalen jalen]# cd nginx-plus/
[root@jalen nginx-plus]# wget https://cs.nginx.com/static/install-nginx && sudo chmod +x install-nginx
[root@jalen nginx-plus]# sudo ./install-nginx 317ab16e38c0f1ba95d0a79aee63481c
[root@jalen nginx-plus]# nginx -v
nginx version: nginx/1.19.5 (nginx-plus-r23)
 
 
3.其他安装
(1)安装nginx开源版,开源版分为稳定版和主线版:
主线版(mainline):包含最新特性和bug修复,是最新的,不过可能包含一些实验模块,也可能会有些新bug。
稳定版(stable):不包含最新特性,且一些重要的bug会被修复,建议用于生产服务器。
参考:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/#
(2)在Amazon EC2安装Nginx plus AMIs
参考:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus-amazon-web-services/
(3)在Google云平台安装Nginx plus
参考:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus-google-cloud-platform/
(4)在微软Azure上安装Nginx plus
参考:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus-microsoft-azure/
(5)在Docker容器内安装Nginx和Nginx Plus
参考:https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-docker/
 
 
4.基本功能描述
(1)在运行时控制nginx进程
主进程和worker进程:nginx有1个master进程和1个或多个worker进程,如果启用了cache,cache loader和cache
manager进程在启动时也会运行。主进程的目的是读取和评估配置文件,同时管理worker进程。worker进程处理实际
requests。nginx依赖于系统机制在工作进程之间高效分发请求。worker进程数量由nginx.conf文件里的
worker_processes指令设定,可以设置成和CPU cores数量一致。
 
(2)控制nginx
nginx -s <SIGNAL>
<SIGNAL>可以是下面几种:
quit:优雅地关闭
reload:重新加载配置文件
reopen:重新打开日志文件,用于日志切割
stop:立即关闭(快速关闭)
也可以用kill命令操作nginx主进程pid向主进程发送信号,主进程号查询:
[root@jalen sbin]# ps -efl|grep 'master process nginx'
 
(3)指令
single‑line指令,分号结束;
多行指令一般包含大括号,括号视为容器,容器内指令视为上下文context;
 
(4)特定功能的配置文件
为了方便管理配置,建议将配置拆分为一组分别处理特定功能的文件存储在/etc/nginx/conf.d目录下,在
nginx.conf主配置文件中使用include指令指向这些文件,如:
include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced;
 
(5)contexts上下文
针对top-level指令,即块指令(包含大括号的指令),如:
events – General connection processing
http – HTTP traffic
mail – Mail traffic
stream – TCP and UDP traffic
其他single-line指令默认被包含在称为main context的context内。配置文件例子:
 
user nobody; # a directive in the 'main' context
 
events {
    # configuration of connection processing
}
 
http {
    # Configuration specific to HTTP and affecting all virtual servers  
 
    server {
        # configuration of HTTP virtual server 1       
        location /one {
            # configuration for processing URIs starting with '/one'
        }
        location /two {
            # configuration for processing URIs starting with '/two'
        }
    } 
    
    server {
        # configuration of HTTP virtual server 2
    }
}
 
stream {
    # Configuration specific to TCP/UDP and affecting all virtual servers
    server {
        # configuration of TCP virtual server 1 
    }
}
 
 
 
 
备注:
1.WAF:
Web Application Firewall,包括但不限于SQLi、XSS、CSRF、暴力破解、文
件上传、RFI等常见Web应用攻击的防护,拥有自学习模式和自定义规则)
 
 
2.F5:
传统WAF的主要模式依然利用协议合规和签名比对来防范攻击,局限于通过检测
请求、流量的形态来判断是否恶意,F5不仅从网络层面注意安全,更从应用层面
进行了一系列保护,如:识别流量、凭证安全、应用层DoS防御、灵活配置。
参考:https://www.aqniu.com/tools-tech/34690.html
 
 
3.CNCF:
全称Cloud Native Computing Foundation(云原生计算基金会), 2015.7.21成立,
口号是坚持和整合开源技术来让编排容器作为微服务架构的一部分,厂商中立,致力
于如Kubernetes、Prometheus、Envoy等Github上的快速成长的开源技术的推广。
参考:https://jimmysong.io/kubernetes-handbook/cloud-native/cncf.html
 
 
4.卸载nginx
[root@jalen ~]# nginx -s quit
[root@jalen ~]# sudo yum remove nginx