一.nginx介绍
Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。它在性能、稳定性、丰富的功能和低系统资源消耗等方面表现优异,因此被广泛应用于互联网的各个领域。
功能介绍:
-
HTTP 服务器功能:Nginx 最常见的用途之一是作为 HTTP 服务器。它可以处理静态文件、索引文件,也可以作为反向代理服务器来处理动态请求,比如将请求转发给应用服务器(如 PHP、Python 或 Node.js 应用)处理。
-
反向代理:Nginx 可以作为反向代理服务器,将客户端的请求转发给后端的应用服务器。这对于负载均衡、缓存和安全性都非常有用。
-
负载均衡:Nginx 可以通过配置多个后端服务器来进行负载均衡,将请求分发到不同的服务器上,从而提高系统的整体性能和可用性。
-
静态文件服务:Nginx 可以快速地提供静态文件,例如 HTML、CSS、JavaScript 和图像等,而无需将请求传递给应用服务器。
-
安全性:Nginx 提供了各种安全功能,包括 SSL/TLS 支持、访问控制、防止恶意请求和 DDOS 攻击的能力等。
-
易于扩展和定制:Nginx 的模块化架构使得它非常灵活,可以通过添加第三方模块或编写自定义模块来扩展其功能。
-
高性能和低资源消耗:Nginx 的事件驱动架构和异步处理模型使其在处理大量并发连接时表现出色,同时具有较低的内存和 CPU 使用率。
-
日志记录:Nginx 提供了详细的访问日志和错误日志,可以帮助管理员监控服务器的运行状态和诊断问题。
二.nginx与apache差异
-
架构设计:
- Apache 是基于多线程模型的传统 Web 服务器,每个客户端连接都会创建一个新的线程或进程来处理请求。
- Nginx 使用事件驱动的架构,采用单线程和异步非阻塞的处理方式,可以同时处理成千上万个连接而不会创建大量的额外进程或线程。
-
性能:
- Nginx 在处理高并发请求时表现更加出色,由于其事件驱动和异步处理模型,能够以更少的资源处理更多的并发连接。
- Apache 在处理静态内容时表现良好,但在处理大量并发请求时可能会受限于线程或进程的创建和管理开销。
-
资源消耗:
- Nginx 的内存消耗通常比 Apache 更低,因为它使用更少的进程和线程来处理请求。
- Apache 在高负载情况下可能会消耗更多的内存和 CPU 资源,因为每个连接都需要一个额外的线程或进程。
-
配置语言:
- Apache 使用基于文本的配置语言,通常为 Apache 的配置文件(如 httpd.conf)。
- Nginx 使用一种更加简洁和易于理解的配置语言,其配置文件结构清晰,语法简洁。
-
模块化支持:
- Apache 拥有丰富的模块生态系统,可以通过加载模块来扩展其功能。
- Nginx 也支持模块化扩展,但其模块化架构相对较新,模块数量可能不及 Apache。
-
适用场景:
- Nginx 通常在需要处理大量静态内容或高并发请求的场景下表现更好,比如作为反向代理、负载均衡器或静态文件服务器。
- Apache 在传统的 Web 服务环境中仍然表现良好,特别是对于需要使用 Apache 特性或模块的项目而言。
总的来说,Nginx 更适合处理大量并发请求和静态内容,而 Apache 则更适合传统的 Web 服务环境和需要丰富模块支持的场景。在选择使用哪种 Web 服务器时,需要根据具体的需求和场景进行权衡和选择。
三.编译安装 nginx服务
nginx官网:nginx: download
源码包内的文件:
- contrib:vim 格式文件,修改nginx配置文件的格式,高亮 cp -r /opt/nginx-1.18.0/contrib/vim/* /usr/share/vim/vimfiles/
- conf:配置文件
- man:man帮助 man man/nginx.8 不加路径看不了 nginx.8 文件
- src:源码包 点c 点h 结尾的文件 find src -type f |xargs cat |wc -l 193678
1.关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
2.安装依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
3.新建nginx用户方便管理
useradd -M -s /sbin/nologin nginx
4.将官网上下载的安装包传输到/opt目录下,并解压
5.切换到编译安装目录,创建/app/nginx文件夹,并编译安装
cd nginx-1.18.0/
[root@localhost nginx-1.18.0]# mkdir /apps/nginx -p
[root@localhost nginx-1.18.0]# ./configure --help
#查看帮助模块
[root@localhost nginx-1.18.0]# ./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
[root@localhost nginx-1.18.0]# make -j2
[root@localhost nginx-1.18.0]# make install
6.建立软链接
ln -s /apps/nginx/sbin/nginx /usr/sbin/
#创建软连接后直接 nginx启动
7.创建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
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
###如果需要修改pid文件可以执行以下操作#################
mkdir /apps/nginx/run/
#创建目录
vim /apps/nginx/conf/nginx.conf
#修改配置文件
pid /apps/nginx/run/nginx.pid;
#找到 pid的位置修改
#######################################################
systemctl daemon-reload
#重新加载配置
systemctl enable --now nginx
#开机自启并立即启动 如果卡主是应为logs下有 nginx.pid 文件 删除即可
chown -R nginx.nginx /apps/nginx
#修改权限
四.nginx相关命令
nginx -h 命令查看选项
命令 | 说明 |
nginx -v | 查看Nginx版本信息 |
nginx -V | 查看Nginx编译配置参数 |
nginx -t | 测试Nginx配置文件语法是否正确 |
nginx -s reload | 平滑重启Nginx(不中断已有连接) |
nginx -T | 测试Nginx配置文件的语法并显示完整的配置信息 |
nginx -s stop | 立即关闭nginx |
nginx -s quit | 优雅退出 不影响业务的状态下退出 |
nginx -s reopen | 分割日志 |
nginx -g | 指定配置 不已配置文件中的为准 |
nginx -s
命令后面通常需要跟随一个指令来告诉 Nginx 主进程执行相应的操作。
stop
: 立即停止 Nginx 服务器。quit
: 安全地退出 Nginx 服务器,允许当前处理的连接完成后再退出。reload
: 重新加载 Nginx 配置文件,不中断正在进行的连接。reopen
: 重新打开 Nginx 的日志文件。
示例:
(1)nginx -v/V #查看Nginx版本信息/#查看Nginx编译配置参数
(2)nginx -s quit #优雅退出 不影响业务的状态下退出
五.升级nginx
基本步骤:
-
将旧Nginx文件换成新Nginx文件(注意备份)
-
向master进程发送USR2信号
-
master进程修改pid文件名,加后缀.oldbin
-
master进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务
-
向旧的Nginx服务进程发送WINCH信号,使旧的Nginx worker进程平滑停止,并删除Nginx.pid.oldbin文件
-
向旧master进程发送QUIT信号,关闭老master
-
如果发现升级有问题,可以回滚向老master发送HUP,向新master发送QUIT
实际操作
1.查看是否开启nginx服务
[root@localhost ~]#ps aux |grep nginx
2.进入配置文件开启两核
[root@localhost ~]#vim /apps/nginx/conf/nginx.conf
#开启 两核
#user nobody;
worker_processes 2;
#worker_processes 1 原来是1核
[root@localhost ~]#nginx -s reload
#重新加载配置文件
[root@localhost ~]#ps aux |grep nginx
3.官网下载nginx-1.20.2包,并传输到/usr/local/src目录下,解压包并切换到编译目录下
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# rz -E
rz waiting to receive.
[root@localhost src]# tar xf nginx-1.20.2.tar.gz
[root@localhost src]# ls
nginx-1.20.2 nginx-1.20.2.tar.gz
[root@localhost src]# cd nginx-1.20.2/
[root@localhost nginx-1.20.2]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
4.重新编译安装
./configure 安装参数基本一致 ,可以使用 nginx -V 查看参数
./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
#重新编译
[root@localhost nginx-1.20.2]#make -j2
###########注意不要执行 make install
5.切换到nginx-1.20.2下的objs ,objs中有新版本的nginx 运行后查看版本
[root@localhost nginx-1.20.2]# cd objs
[root@localhost objs]# ls
autoconf.err Makefile nginx nginx.8 ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_modules.o src
[root@localhost objs]# systemctl start nginx
[root@localhost objs]# cd ..
[root@localhost nginx-1.20.2]# objs/nginx -v
nginx version: nginx/1.20.2
6.将低版本的nginx主程序改名,将新版本的nginx拷贝进去
[root@localhost nginx-1.20.2]#mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak
#将低版本的nginx主程序改名
[root@localhost nginx-1.20.2]#cp objs/nginx /apps/nginx/sbin/
#将新版本 拷入进去
标签:网络服务,nginx,--,apps,Nginx,root,localhost
From: https://blog.csdn.net/weixin_56770318/article/details/139352524