Nginx学习与实践

Nginx学习笔记

学习资料

尚硅谷2022版Nginx教程(亿级流量nginx架构设计)-哔哩哔哩

常用版本

Nginx开源版
Nginx plus 商业版
Openresty

OpenResty是一个成熟的网络平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库,许多高质量的第三方Nginx模块以及大多数外部依赖项。它旨在帮助开发人员轻松构建可伸缩的Web应用程序,Web服务和动态Web网关。

Tengine

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

目录结构

在这里插入图片描述

conf:配置文件,主配置文件只有一个nginx.conf
html:默认网页、静态资源
logs:access.log访问日志、error.log错误日志、nginx.pid主进程ID号
sbin:只有一个文件,nginx主程序文件

运行原理

在这里插入图片描述

当用户请求发起时,Nginx响应请求过程是这样的,首先Nginx目录下有个/sbin/nginx可执行文件,当启动后会开启主进程和子进程,master为主进程、worker为子进程,主进程会将配置文件读取出来并做一次效验,如果配置文件没有错误,则会开启子进程,运行时会分为两种进程,一种是主进程,一种是子进程,主进程不处理业务,主进程负责协调子进程,当主进程、子进程启动起来后,用户请求接入到系统中是由worker进程来读取nginx.conf配置文件响应并解析的。

基础配置

worker_processes

# 默认为1,表示开启一个业务进程
worker_processes  1;

worker_connections

# 单个业务进程可接受连接数
worker_connections  1024;

include mime.types;

# 引入http mime类型
include       mime.types;

default_type application/octet-stream;

# 如果mime类型没匹配上,默认使用二进制流的方式传输
default_type  application/octet-stream;

sendfile on;

# 使用linux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝
sendfile        on;

server_name匹配规则

我们需要注意的是server_name匹配分先后顺序,写在前面的匹配上了就不会继续往下匹配。
我们可以在同一个server_name中匹配多个域名,如下:
server_name diuxz.cn www.diuxz.cn;

proxy_pass与root

配置proxy_pass会导致root失效,二选一
proxy_pass不能配置https

负载均衡策略之权重、down、backup

upstream 定义名称{
    server 服务器ip:端口 weight=权重值;
    server 服务器ip:端口 weight=权重值 down;
    server 服务器ip:端口 weight=权重值 backup;
}

weight权重值为数字,代表此台机器轮询几次,可根据性能配置,比如A机器性能好,B机器性能差一点,可以配置A机器轮询2次,B机器轮询1次。

down代表不参与轮询暂时挂机。

backup代表其他机器挂掉,才会使用到它,正常情况下不用它,相当于备用机。

对上游服务器使用keepalive

首先需要配置使用http1.1协议。以便更高效的传输,默认使用http1.0,在http1.0中需要配置header才能在Upstream中所配置的上游服务器默认都是用短连接,即每次请求都会在完成之后断开。

相关配置

upstream配置
#向上游服务器的最小保留连接数
keepalive 100;
#连接保留时间
keepalive_timeout 65;
#一个tcp复用中可以并发接收的请求个数
keepalive_requests 1000;
server中location下配置
#配置http版本号,默认使用http1.0协议,需要在request中增加“Connection:keep-alive”header才能够支持,而http1.1默认支持
proxy_http_version 1.1;

Nginx实践

Linux安装Nginx

1、安装gcc
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装;

yum install gcc-c++

2、PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。

yum install -y pcre pcre-devel

3、zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

4、OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。

nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-devel

5、下载安装包
手动下载.tar.gz安装包,地址:https://nginx.org/en/download.html

在这里插入图片描述
上传到root目录下
6、解压

tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0/

7、配置
开启ssl模块

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install

8、查找安装路径

whereis nginx

9、删除安装包和压缩包

rm -rf /root/nginx-1.22.0
rm -rf /root/nginx-1.22.0.tar.gz

常用命令

cd /usr/local/nginx/sbin/     #进入nginx安装目录nginx 所在位置
./nginx     #启动
./nginx -s stop     #停止
./nginx -s quit     #安全退出
./nginx -t     #验证配置文件是否正确
./nginx -s reload     #重新加载配置文件
ps aux|grep nginx     #查看nginx进程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值