Nginx介绍与部署实践

本博客链接:https://security.blog.csdn.net/article/details/128865963

一、Nginx介绍

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现,也可以作为入口网关。

Nginx功能包括:

● HTTP和HTTPS(TLS / SSL / SNI)
● 超快速的Web服务器用于静态内容
● FastCGI,WSGI,SCGI用于动态内容
● 具有负载平衡和缓存功能的加速Web代理
● 不间断实时二进制升级和配置
● 压缩和内容过滤器
● 虚拟主机
● FLV和MP4的媒体流
● 带宽和连接策略
● 全面的访问控制
● 自定义日志
● 嵌入式脚本
● 带有TLS的SMTP/IMAP/POP3的邮件代理
● 逻辑,灵活,可扩展的配置
● 在Linux,FreeBSD,Mac OS X,Solaris和Windows上运行

常用的使用场景:

● 静态资源服务,通过本地文件系统提供服务;
● 反向代理服务,延伸出包括缓存、负载均衡等;
● API服务,OpenResty;

Nginx核心概念:

如正向代理、反向代理、负载均衡就不再细说了,这里我们只解释下动静分离。

动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问的架构设计方法,进而提示整个服务的访问性和可维护性。

一般来说,都需要将动态资源和静态资源分开,由于Nginx的高并发和静态资源缓存等特性,经常将静态资源部署在Nginx上。如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离。

使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。

二、Nginx部署

1、拉取Nginx的最新版Docker镜像到本地:

docker pull nginx

2、创建Nginx配置文件

启动前需要先创建Nginx外部挂载的配置文件,当然也可以不创建,如果不创建的话,当我们需要修改nginx的配置文件时就会很麻烦了,需要进入到容器内部,修改配置,退出容器,然后再进行容器重启,过程较为繁琐。为了解决此问题,我们可以在容器启动的过程中添加一条命令,实现Nginx的配置文件和本地主机指定的配置文件形成关联映射,那么以后只要我们改动本地的配置文件后就会自动映射到Nginx容器中,这样极大的简化了修改容器配置文件的流程。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html

3、将容器中的nginx.conf文件和conf.d文件夹复制到宿主机:

# 生成容器,不然复制无从谈起
docker run --name nginx -p 8000:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

之后就可以根据自己的情况修改本地的Nginx的配置文件了,配置文件后面具体展开。
修改好之后,就可以将修改好的配置文件挂载到Nginx镜像中启动,也就是说启动的Nginx镜像会使用我们本地的配置文件。

4、这里我们在一台机器上测试,就要先删除前面启动的容器:

# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx

5、挂载本地配置文件启动:

# 也可以写成一行
docker run \
-p 8000:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest

命令解释:

-p 8000:80:将容器的8000端口映射到主机的80端口
–name nginx:启动容器的名字
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:挂载本地的nginx.conf配置文件
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d:挂载本地的nginx配置文件
-v /home/nginx/log:/var/log/nginx:挂载本地的nginx日志文件
-v /home/nginx/html:/usr/share/nginx/html:挂载本地的nginx内容
-d:后台运行
nginx:latest:本地运行的版本,镜像REPOSITORY标识,或者可以使用IMAGE ID

6、验证一下:
在这里插入图片描述

7、修改本地文件内容

如果修改/home/nginx/html/index.html文件内容的话,不用重启,直接刷新浏览器即可热生效;
如果在本地修改nginx.conf和conf目录下的配置文件的话,需要重启容器重新加载配置,另外,修改配置文件时,文件中的路径要使用容器中的路径。

在这里插入图片描述

三、Nginx常用命令

# 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务
nginx -s stop
# 平稳关闭Nginx,保存相关信息,有安排的结束web服务
nginx -s quit
# 因改变了Nginx相关配置,需要重新加载配置而重载
nginx -s reload
# 重新打开日志文件
nginx -s reopen
# 为 Nginx 指定一个配置文件,来代替缺省的
nginx -c filename
# 不运行,而仅仅测试配置文件。nginx将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件
nginx -t
# 查看当前 Nginx 最终的配置
nginx -T
# 显示 nginx 的版本
nginx -v
# 显示 nginx 的版本,编译器版本和配置参数
nginx -V
# 格式换显示 nginx 配置参数
2>&1 nginx -V | xargs -n1
2>&1 nginx -V | xargs -n1 | grep lua

猜你喜欢

转载自blog.csdn.net/wutianxu123/article/details/128865963