Nginx的搭建与核心配置

目录

1 Nginx概述

1.1 Nginx模块与作用

1.2 Nginx三大作用(反向代理、负载均衡、动静分离)

2 Nginx和Apache对比

2.1 Nginx和Apache的差异

2.2Nginx和Apache的优缺点比较

3 安装及使用Nginx

3.1 编译安装nginx

3.2 启动停止nginx

3.3 创建Nginx 自启动文件

4 平滑升级及信号使用

4.1 信号

          4.1.1 显示版本

 4.1.2显示编译详细情况 模块等信息

 4.1.3发送信号

 4.1.4 指定配置 不已配置文件中的为准

 4.1.5 检查语法格式

4.2升级 nginx1.18 nginx1.20


1 Nginx概述

  • 一款高新能、轻量级Web服务软件
  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
  • 单台物理服务器可支持30 000~50 000个并发请求。

1.1 Nginx模块与作用

main模块:全局配置模块,所有模块都要执行遵守

配置运行nginx服务器的用户(组)、worker_process数(进程)、nginx进程PID存放路径、错误日志存放路径、配置文件的引入等

stream服务模块:实现反向代理功能,包括TCP协议代理

邮件服务模块:主要用于支持 Nginx 的邮件服务

对 POP3 协议、 IMAP 协议和 SMTP协议的支持

第三方模块:二次开发,为了扩展 Nginx 服务器应用,完成开发者自定义功能

Json 支持、 Lua 支持等

events模块:影响nginx服务器与用户的网络连接

events {                                              #events模块设置

woker_connections 65536;                #设置单个工作进程最大并发连接数

use epoll;                                           #事件驱动类型选择为epoll

accept_mutex on;                              #同一时刻一个请求轮流由work进程除了,即轮询

multi_accept on;                                #每个工作进程同时接受多个网络连接

}

http模块:跟web服务相关,主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,包含几个子模块

自定义服务日志、允许sendfile方式传输文件、连接超时时间、单连接请求数上限、Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

location模块:uri网址定位

server模块:服务模块

配置80端口监听、虚拟主机、DNS域名解析等

auth_basic模块:对网页设置用户名密码

gzip模块:压缩

proxy模块:设置后端IP地址、端口号及http和加密的https

ssl模块:https加密
 

1.2 Nginx三大作用(反向代理、负载均衡、动静分离)

1. 反向代理:在服务端 配置,客户端 访问服务器A ,服务器A 为代理服务器 ,将客户服务再转发到服务器B 

       作用:缓存,将服务器的响应缓存在自己的内存中,减少服务器压力;

                  负载均衡,将用户请求分配给多个服务器;

                  访问控制

正向代理在客户端 配置,配置完了再去访问具体服务,即代理服务器 代理了客户端 ,再去和目标服务器 进行交互

       作用:提高访问速度

                  隐藏客户端真实IP地址

2. 负载均衡:分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务

nginx七层负载均衡调度算法(六种)

①询(默认调度算法)

特点:每个请求按时间顺序逐一分配到不同的后端服务器处理。
适用业务场景:后端服务器硬件性能配置完全一致,业务无特殊要求时使用。

upstream backendserver {
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}

②加权轮询

特点:指定轮询几率,weight值(权重)和访问比例成正比,用户请求按权重比例分配。
适用业务场景:用于后端服务器硬件性处理能力不平均的情形。

upstream backendserver {
server 192.168.0.14:80 weight=5 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 weight=10 max_fails=2 fail_timeout=10s;
}


③ip_hash(IP哈希)

特点:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session会话保持问题。
适用业务场景:适用于需要账号登录的系统,会话连接保持的业务。

upstream backendserver {
ip_hash;
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}


④最少连接数 least_conn

特点:按nginx反向代理与后端服务器之间的连接数,连接数最少的优先分配。

适用业务场景:适用于客户端与后端服务器需要保持长连接的业务。

upstream backendserver {
least_conn; server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}

⑤响应时间 fair(需编译安装第三方模块 ngx_http_upstream_fair_module)

特点:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
适用业务场景:对访问响应速度有一定要求的业务。

upstream backendserver {
fair;
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
}

⑥url_hash(URL分配 )(需编译安装第三方模块 ngx_http_upstream_hash_module)

特点:按访问url的hash结果来分配请求,使同一个url访问到同一个后端服务器。

适用业务场景:适用于后端服务器为缓存服务器时比较有效。

upstream backendserver {
server 192.168.0.14:80 max_fails=2 fail_timeout=10s;
server 192.168.0.15:80 max_fails=2 fail_timeout=10s;
hash $request_uri;
}

3. 动静分离:采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对PHP的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。

在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式,通过使用Nginx提高网站的响应速度,优化用户体验
 

2 Nginx和Apache对比

2.1 Nginx和Apache的差异

Apache:   同步多进程模型:一个连接对应一个进程(高稳定)

  1. rewrite更强大(rewrite主要功能是实现统一资源定位符URL的跳转)
  2. 模块多,基本想到的都可以找到
  3. 少bug,更加稳定(nginx相对较多)
  4. PHP支持比较简单(nginx需要配合其他后端用)
  5. 处理动态请求更有优势(nginx更适合静态与反向)

Nginx:  异步非阻塞模型:多个连接(万级别)对应一个进程(高性能)

  1. 轻量级,采用C编写,占用更少的内存与资源
  2. 抗并发/高并发,以epoll and kqueue 作为开发模型,负载能力高,高并发下能够保持低资源低消耗高性能(apache在PHP处理慢或前端压力很大时,容易出现进程数飙升从而拒绝服务)
  3. 处理静态文件好,静态处理性能比apache高三倍以上
  4. 设计高度模块化,编写模块相对简单
  5. .配置简洁,正则配置更简单,且更改完可以使用 -t 测试(apache配置复杂,重启时发现出错,会很崩溃)
  6. 作为负载均衡服务器,支持七层负载均衡,可以有效防止ddos攻击
  7. 本身是一个反向代理服务器,也可以作为邮件代理服务器使用
  8. 支持热部署,支持在线升级
     

2.2Nginx和Apache的优缺点比较

nginx相对apache的优点∶

  • 轻量级,同样起web服务,比Apache占用更少的内存及资源。
  • 高并发,Nginx处理请求是异步非阻塞的,而Apache是阻塞型的在高并发下,Nginx能保持低资源低消耗高性能。
  • 高度模块化的设计。
  • 编写模块相对简。
  • 社区活跃,各种高性能模块出品速度

apache相对于nginx的优点∶

  • 3rewrite比nginx的rewrite强大
  • 模块多,基本想到的都可以找到
  • 少bug, Nginx的bug相对较超稳定
  • 存在就是理由,一般来说,需要性能的web服务,用Nginx。如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。
     

3 安装及使用Nginx

3.1 编译安装nginx

安装依赖包

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel 
#安装依赖包   

Nginx的搭建与核心配置_第1张图片


新建nginx用户便于管理

 useradd -M -s /sbin/nologin nginx 

Nginx的搭建与核心配置_第2张图片

 下载安装包

wget   http://nginx.org/download/nginx-1.18.0.tar.gz

Nginx的搭建与核心配置_第3张图片

 

 解压安装包

Nginx的搭建与核心配置_第4张图片

 

./configure --help   
#查看帮助模块

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module

Nginx的搭建与核心配置_第5张图片

 

make

Nginx的搭建与核心配置_第6张图片

 

make  install

Nginx的搭建与核心配置_第7张图片

 安装好后生成四个文件功能如下

Nginx的搭建与核心配置_第8张图片

  1. conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。

  2. html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。

  3. logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。

  4. sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

修改权限

chown  -R  nginx.nginx /apps/nginx

3.2 启动停止nginx

启动

/apps/nginx/sbin/nginx  ##绝对路径启动

ps   :   ln -s /apps/nginx/sbin/nginx /usr/sbin/     ##创建软连接后直接 nginx启动

Nginx的搭建与核心配置_第9张图片

 停止

killall  nginx  ##停止nginx服务

Nginx的搭建与核心配置_第10张图片

 

3.3 创建Nginx 自启动文件

建立文件

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid  
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target

Nginx的搭建与核心配置_第11张图片

如果需要修改pid文件可以执行以下操作

#创建目录
vim /apps/nginx/conf/nginx.conf
#修改配置文件
pid   /apps/nginx/run/nginx.pid;
#找到 pid的位置修改  

Nginx的搭建与核心配置_第12张图片

 重新加载配置

systemctl daemon-reload 

开机自启并立即启动    

如果卡主是应为logs下有 nginx.pid  文件  删除即可

systemctl enable --now nginx

Nginx的搭建与核心配置_第13张图片

 

4 平滑升级及信号使用

4.1 信号

nginx 命令支持向其发送信号,实现不同功能

nginx 当做单独命令使用有以下选项

Nginx的搭建与核心配置_第14张图片

4.1.1 显示版本

 nginx   -v  (小写)Nginx的搭建与核心配置_第15张图片

 4.1.2显示编译详细情况 模块等信息

nginx   -V (大写)

Nginx的搭建与核心配置_第16张图片

 

4.1.3发送信号

 kill -l  看信号大全

Nginx的搭建与核心配置_第17张图片
 

nginx -h   中可以看到的信号较少    

Nginx的搭建与核心配置_第18张图片

nginx -s   stop   #立即关闭nginx

nginx -s   quit   #优雅退出   不影响业务的状态下退出
Nginx的搭建与核心配置_第19张图片

 
nginx -s   reload #重新加载

Nginx的搭建与核心配置_第20张图片

4.1.4 指定配置 不已配置文件中的为准

nginx -g 指定配置 不已配置文件中的为准

nginx -g 'cyw;'   已张三身份运行,默认是以nginx身份
nginx -g 'daemon off;'    前台运行命令

 

4.1.5 检查语法格式

nginx   -t

4.2升级 nginx1.18 nginx1.20

  1. 将旧Nginx文件换成新Nginx文件(注意备份)

  2. 向master进程发送USR2信号

  3. master进程修改pid文件名,加后缀.oldbin

  4. master进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务

  5. 向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止,并删除Nginx.pid.oldbin文件

  6. 向旧master进程发送QUIT信号,关闭老master

  7. 如果发现升级有问题,可以回滚向老master发送HUP,向新master发送QUIT

Nginx的搭建与核心配置_第21张图片

 重新加载配置文件

Nginx的搭建与核心配置_第22张图片

 

wget https://nginx.org/download/nginx-1.20.2.tar.gz -P /usr/local/src/
#下载安装包到src目录

Nginx的搭建与核心配置_第23张图片

Nginx的搭建与核心配置_第24张图片

解压并重新编译安装

 

 如果有新模块在后添加即可

Nginx的搭建与核心配置_第25张图片

添加新模块

./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

Nginx的搭建与核心配置_第26张图片

 

重新编译

注意不要执行  make install

Nginx的搭建与核心配置_第27张图片

  查看Nginx的搭建与核心配置_第28张图片

 

你可能感兴趣的:(nginx,运维,数据库,linux,安全,服务器)