第一部分初识Nginx

第一部分:初识Nginx

cc点击上方“Python Web与Django大咖之路”关注我!

即将开启一个Nginx的系列学习笔记,主要分为6个部分:第一部分:初识Nginx;第二部分:Nginx架构基础 ;第三部分:详解Http模块;第四部分:反向代理与负载均衡;第五部分:Nginx的系统层性能优化;第六部分:从源码视角深入使用Nginx与OpenResty。
现在开始第一部分: 初识Nginx的笔记。
一、Nginx的主要应用场景
Nginx的应用场景主要分为三个部分:
静态资源服务:通过本地文件系统提供服务;
反向代理服务:
Nginx的强大性能;
缓存;
负载均衡;
API服务:OpenResty;

二、Nginx的主要优点
高并发,高性能;
可扩展性好:主要体现在模块化的设计。
高可靠性:可以在服务器上不间断的运行,不轻易宕机。
热部署:可以再不停止服务的情况下,升级Nginx。
BSD许可证;

三、Nginx的主要组成部分
Nginx分为4个部分:

四、Nginx的编译安装及配置语法介绍
4.1 编译安装
下载Nginx:
网址:www.nginx.org,点击download

选择稳定版本,复制链接地址:

Linux下载、解压、进入文件目录:

小技巧:如果想要将centos7下面的Nginx的配置文件nginx.conf的代码高亮,那么就要将下载的源码包contrib/vim/*的文件拷贝到本机安装的vim下:

这样再用vim打开文件时就高亮显示了:

配置(configure):

如果出现下面这样,即是安装成功:

如果报错1:

yum-yinstallpcre-devel如果报错2:

yum install -y zlib-devel编译(make):生成大量的中间文件

安装(make install):

查看:
cd /usr/local/nginx
conf: 配置目录logs:日志文件——access.log、error.logsbin:运行nginx的目录html:显示html的文件小技巧:
将启动nginx的运行目录加入环境变量,这样你就可以在任何目录下直接输入nginx运行。编辑文件:vim ~./bash_profile

通过source使更改生效:
source~/.bash_profile4.2 通用配置语法
1、配置文件由指令与指令块构成;
2、每条指令以;分号结尾,指令与参数间以空格符分隔;
3、指令块以{ }大括号将多条指令组织在一起;
4、include语句允许组合多个配置文件以提升可维护性;
5、使用#符号添加注释,提高可读性;
6、使用$符号使用变量;
7、部分指令的参数支持正则表达式;

配置参数 —— 时间的单位

配置参数 —— 空间的单位

HTTP配置的指令块

Nginx语法示例:

五、Nginx命令行及演示:重载、热部署
Nginx命令行

命令行演示
重载:当你修改了nginx.conf之后进行重载

nginx-s reload热部署:现有的nginx正在运行,此时更换一个新版本的nginx

# 现有的nginx二进制文件进行备份cpnginxnginx.old#复制新版本的nginx二进制文件替换当前目录的二进制文件cp -r nginx /usr/local/openresty/nginx/sbin/ -f#给现有的Nginx的master发送一个信号:现在要进行热部署kill-USR213195#之后会看见nginx master新起一个master进程,是使用刚刚复制的最新的nginx文件启动的,老的worker也在运行,它会平滑的过渡到新的worker中运行。#这时候向老的worker发送一个信号:优雅的关闭你所有的workerkill-WINCH13195#老的worker是不会彻底关闭的,它会等待版本的回退

六、用Nginx搭建一个可用的静态资源Web服务器
准备要放在服务器上的静态资源:这里我准备的是Arduino网站的一个html文件及一些图片,资源放在/usr/local/nginx/dlib/下。

配置nginx.conf:将所有的访问都指向dlib/目录下,共享静态资源:autoindex on;

检查/启动nginx
# 检查配置文件是否有误nginx -t#重新加载启动nginxnginx-s reload浏览器访问服务器:
ip地址:8080 —— 访问的是/usr/local/nginx/dlib/index.html

ip地址:8080/dlib —— 访问的是/usr/local/nginx/dlib/dlib/下的内容

这时候按F12查看此时的传输情况:此时传输的大小为3.4k

此时重新配置nginx.conf:打开gzip(压缩传输)

再重新启动nginx之后,再访问查看传输大小,你会发现文件大小从3.4k变为了 752B,也就是说gzip打开之后,网络的传输效率会提高很多。

小技巧:
因为服务器的带宽是有限的,所以有时候需要有针对性的限制传输的效率,这时候就可以在nginx.conf文件中进行配置。后面的数字表示:每秒传输多大的字节到浏览器中。

nginx.conf中还可以定义日志的格式:log_format,日志名:main

配置好日志格式之后,就可以配置日志的存放位置:

此时重新启动nginx之后,再访问服务器地址,就会安装设定好的日志格式生成host.access.log日志文件:

七、用Nginx搭建一个具备缓存功能的反向代理服务
由于上游服务器(通常是不提供给公网访问的)要处理非常复杂的业务逻辑,而且强调开发效率,所以性能就不怎么样,使用nginx作为反向代理之后,可以由一台nginx把请求按照负载均衡算法代理给多台的上游服务器工作,这样就实现了水平扩展,在用户无感知的情况下,我们添加更多的上游服务器,来提升数据处理的性能;当上游服务器出现问题的时候,nginx可以自动的把请求从有问题的服务器转交给正常服务器。
将前面搭建的静态web服务器设置为上游服务器(监听127.0.0.1:8080),并重新启动

此时公网是不能访问这个服务器的:

利用OpenResty启动一个nginx反向代理服务器
安装openresty:
yum-config-manager –add-repo https://openresty.org/package/centos/openresty.repoyuminstall openresty
进入新安装的nginx的配置文件,修改配置文件
# 新安装的nginx在这个目录下/usr/local/openresty/nginx/
检查/启动nginx:

此时浏览器输入你的服务器ip地址,你就会发现网页已经可以访问了:

此时你去查看请求头,已经变为由openresty发起的:

将反向代理服务器增加缓存功能
修改nginx.conf配置文件

此时将静态资源服务器停掉,看原本的网页还能不能访问。答案是可以继续访问,因为原来的页面已经被缓存了。

小技巧:
关于nginx更详细的参数配置,可参考官网: http://nginx.org/en/docs/

八、用GoAccess实现可视化并实时监控access日志
access日志记录了nginx非常重要的信息,可以利用access日志分析定位问题,也可以用来分析运行数据。如果想要实时的、图形化的监控access日志,那么就可以使用GoAccess工具来实现。
下面这张图是没有做任何配置的情况下,access.log的显示:

安装goaccess工具
$ wget https://tar.goaccess.io/goaccess-1.3.tar.gz$ tar -xzvf goaccess-1.3.tar.gz$ cd goaccess-1.3/$ ./configure –enable-utf8 –enable-geoip=legacy #如果上一步的编译出错,请执行:yum install -y GeoIP-devel 和 yum install -y ncurses-devel$ make# make install 在执行./configure –enable-utf8 –enable-geoip=legacy,如果编译成功,将显示:

使用goaccess工具(详细配置教程:https://goaccess.io/get-started)
# 进入/usr/local/nginx/logs/目录下cd /usr/local/nginx/logs/# 执行命令goaccess host.access.log -o ../html/report.html –real-time-html –time-format=’%H:%M:%S’ –date-format=’%d/%b/%Y’ –log-format=COMBINED 将显示,启动了一个WebSocket:

此时再打开另一个终端,配置nginx.conf(即说明当访问ip地址:8080/report.html时,指向的文件位置是: /usr/local/nginx/html/report.html):

浏览器访问 ip地址:8080/report.html,实现了access日志的实时可视化监控:

九、从网络原理来看SSL安全协议
TLS/SSL的发展

TSL安全密码套件解读

十、对策加密与非对称加密各自的应用场景
对称加密
通信的两个人通知持有相同的密钥,Bob利用密钥对明文进行加密,Alice利用密钥对密文进行解密。

非对称加密
生成一对密钥,一个叫公钥,一个叫密钥。

十一、SSL证书的公信力是如何保证的?
PKI公钥基础设施

证书类型

证书链

END

赞(0)
未经允许不得转载:第一SCI网 » 第一部分初识Nginx

评论 抢沙发

评论前必须登录!