参考: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