nginx的安装和全局配置

这篇具有很好参考价值的文章主要介绍了nginx的安装和全局配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

何为nginx

Nginx 功能介绍

基础特性

nginx架构

Nginx 进程结构

nginx 模块

模块分类

使用方式

编译安装nginx

第一步:获取安装包

第二步:安装依赖

第三步:创建用户nginx

第四步:解压安装包

第五步:编译安装

最后一步:修改nginx目录的所属

额外一步:添加软连接(为了可以补全命令和快速启动)

nginx开机自启

平滑升级及信号的使用

平滑升级

第零步:准备操作

​编辑

第一步:备份旧版本,安装新版本

第二步:完成新版本安装

第三步:优雅关闭

第四步:升级 level up

回滚

信号

​编辑

常用的信号

查看版本信息

常用发送信号

分割日志

检查语法格式

nginx的配置文件

全局配置

模块

关闭版本和修改版本信息

修改进程数

进程与内核绑定

worker优先级

设置worker打开的文件的上限


何为nginx

Nginx是一款轻量级的 web服务器、反向代理服务器 及 mail代理服务器。其特点是占有内存少,并发能力强

Nginx 功能介绍
  • 静态的web资源服务器html,图片,js,css,txt等静态资源

  • http/https协议的反向代理 7层协议

  • 结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求

  • tcp/udp协议的请求转发(反向代理) 4层协议

基础特性
  • 模块化设计,较好的扩展性

  • 高可靠性

  • 支持热部署:不停机更新配置文件,升级版本,更换日志文件

  • 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存

  • event-driven,aio,mmap,sendfile

nginx架构

nginx的安装和全局配置,nginx,github,运维

Nginx 进程结构

nginx 进程分为 master(主进程),worker(子进程)

nginx的安装和全局配置,nginx,github,运维

nginx 模块

模块分类
  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

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

  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

使用方式

在编译安装第一步的时候使用 ./configure --help 可以查看支持的模块

./configure --help
# 查看帮助,里面会带有可用的模块
# 提示:要在nginx的安装包中使用该命令才有用

nginx的安装和全局配置,nginx,github,运维

编译安装nginx

nginx不选择yum(rpm)安装的原因

  1. rpm会导致系统原有的库文件被破坏,导致新的软件包无法正常安装,存在着依赖关系;源码编译安装nginx快速,安全。
  2. 版本控制不行,规模部署,rpm的方式搞不定,没有统一的基础设施规范;源码编译nginx具有统一的基础设施规范。

所以我们选择编译安装nginx

第一步:获取安装包

nginx的安装可以自己去其官网下载  nginx: download

也可以使用命令:

wget http://nginx.org/download/nginx-1.18.0.tar.gz
# 从 nginx 的官网下载 nginx 1.18.0 的安装包

nginx的安装和全局配置,nginx,github,运维

第二步:安装依赖

一个软件的运行需要一个或者多个依赖

yum -y install gcc pcre-devel openssl-devel \
zlib-devel openssl  openssl-devel
# 使用 yum install 安装 nginx 运行所需要的依赖

nginx的安装和全局配置,nginx,github,运维

第三步:创建用户nginx

服务器使用该服务时多多少少会有漏洞,为了安全起见,创建用户 nginx ,将漏洞可能引发的问题限制在较小的范围内

useradd -M -s /sbin/nologin nginx
# 新建程序用户 nginx 

nginx的安装和全局配置,nginx,github,运维

第四步:解压安装包
tar xf nginx-1.18.0.tar.gz
# 解压 nginx 安装包

nginx的安装和全局配置,nginx,github,运维

第五步:编译安装
cd /data/nginx-1.18.0/
# 进入安装包

mkdir /apps/nginx -p
# 创建目录(后续nginx的安装目录)

./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
# 声明需要的模块

make -j2 && make install
# 用两核编译,并开始安装

nginx的安装和全局配置,nginx,github,运维nginx的安装和全局配置,nginx,github,运维

最后一步:修改nginx目录的所属
chown -R nginx.nginx /apps/nginx
# 修改权限,完全控制文件夹的权限

nginx的安装和全局配置,nginx,github,运维

额外一步:添加软连接(为了可以补全命令和快速启动)

将nginx的启动项放到/usr/sbin/

ln -s /apps/nginx/sbin/nginx /usr/sbin
# 添加软连接

nginx的安装和全局配置,nginx,github,运维

nginx开机自启

vim /usr/lib/systemd/system/nginx.service
# 编辑 nginx自启 文本

[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 实际安装位置来修改
# 请勿盲目复制

平滑升级及信号的使用

平滑升级:在进程不被关闭的情况下完成新版本的安装,并优雅退出就旧的子进程

信号的使用:以nginx为命令

平滑升级

步骤:

第零步:准备操作
systemctl status nginx
# 先查看 nginx 程序是否启动

systemctl start nginx
# 若没启动

vim /apps/nginx/conf/nginx.conf
# 然后进入 nginx 配置文件


#user  nobody;
worker_processes  1;
# 将 worker_processes  1;改为worker_processes  2;
# 将 worker 进程数从1修改为2(即将其从1核变为2核)

nginx -s reload
# 重新加载 nginx 配置文件

ps aux | grep nginx
# 查看 nginx 的进程
# 现在正常情况应该是1个master进程以及2个worker进程
nginx的安装和全局配置,nginx,github,运维
第一步:备份旧版本,安装新版本

先将旧版本 nginx 的二进制文件进行备份,以防万一

cd /apps/nginx/sbin/
# 进入放有二进制文件的文件夹中

cp /apps/nginx/sbin/nginx /data/nginx.jiu
# 将其备份并改名方便分辩

再编译新版本nginx的二进制文件

wget https://nginx.org/download/nginx-1.20.2.tar.gz -P /data
# 获取新版本安装
# 我的版本是1.18.0,所以在这里使用1.20.2进行升级处理

tar xf nginx-1.20.2.tar.gz
# 解压安装包

cd /data/nginx-1.20.2
# 进入安装包

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
# 先对新版本 nginx 进行编译,后面的模块要和你nginx -V显示的一样
# 如果需要的新的模块可以在后面添加

# 注意安装的位置要和老版本的一致

make -j2
# 注意这里只需要make,不需要make install

mv /apps/nginx/sbin/nginx   /apps/nginx/sbin/nginx.bak
# 为了方便将新二进制文件移进来

cp objs/nginx /apps/nginx/sbin/
# 拷贝新版本

用命令向旧版本master进程发送USR2信号(在处理完请求后关闭work子进程)

kill -USR2 `cat /apps/nginx/run/nginx.pid`
# 向旧 master 进程发送 USR2 信号
第二步:完成新版本安装

这个时候新老版本的nginx同时存在,但新用户的请求只会发给新进程,旧进程不再接受

ps auxf|grep nginx
# 现在会产生 2个 master 进程
第三步:优雅关闭

关闭旧master的worker进程

(自选)马上要优雅关闭,若处于非服务状态下可以使用下面
        的命令,使worker进程开始任务,方便观察优雅关闭过程

dd if=/dev/zero of=/apps/nginx/html/m.img bs=1G count=10
# 新建 10G 的文件 m.img

# 再开一台新的虚拟机
wget --limit-rate=1M http://192.168.91.100/m.img
# 用新虚拟机下载大文件

因为用的是优雅关闭所以会在worker完成任务后再退出

kill -WINCH `cat /apps/nginx/run/nginx.pid.oldbin`
# 优雅关闭
第四步:升级 level up

测试新版本nginx是否正常运行

wget --limit-rate=1M http://192.168.91.100/m.img
# 再选择一台新的虚拟机下载大文件

ss -ntap|grep 80
# 查看是否开了一个新的worker

若不能正常运行,则将旧版本nginx发送hup信号,让其重新生成worker进程,也就是回滚

回滚

当升级成新版本的nginx不能正常运行时,唤起老版本的nginx的master进程,并关闭新版本的

kill -HUP `cat /apps/nginx/run/nginx.pid.oldbin`
# 该命令可以唤醒老的master进程

kill -QUIT `cat /apps/nginx/run/nginx.pid`
# 退出新版本的master进程

信号

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

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

nginx -h
# 查看信号的帮助
# 若无法使用nginx命令,请建立软连接
# 即:
ln -s /apps/nginx/sbin/nginx /usr/sbin
#          ↑ 
#    /你nginx安装的位置/sbin/nginx
nginx的安装和全局配置,nginx,github,运维
常用的信号
  • TERM或INT:快速停止nginx服务
  • QUIT:平缓停止nginx 服务
  • HUP:使用新的配置文件启动进程,平缓停止原有进程
  • USR1: 重新打开日志文件,常用户日志切割
  • USR2:使用新版本的nginx文件启动服务,之后平缓停止原有nginx进程
  • WINCH:平滑停止worker process,用于nginx服务器平滑升级
查看版本信息
nginx -v
# 显示版本信息

nginx -V
# 显示详细信息

nginx的安装和全局配置,nginx,github,运维

常用发送信号
nginx -s   stop   
# 立即关闭nginx

nginx -s   quit   
# 优雅退出   不影响业务的状态下退出

nginx -s   reload 
# 重新加载  
分割日志

首先你要找到日志文件在哪

nginx日志文件默认存放在 /var/log/nginx目录下,但如果nginx没有使用默认位置的话,就需要进入nginx的配置文件中查找

检查语法格式
nginx -t
# 检查配置文件中的语法格式是否正确

nginx的安装和全局配置,nginx,github,运维

nginx的配置文件

Nginx的配置文件的组成部分:

主配置文件:nginx.conf

子配置文件: include conf.d/*.conf

nginx的安装和全局配置,nginx,github,运维

全局配置

模块
  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

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

  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

关闭版本和修改版本信息
vim /apps/nginx/conf/nginx.conf
# 进入 nginx 的主配置文件

server_tokens off;
# 在http语句中添加

nginx -s reload
# 重新加载配置文件

curl -I http://192.168.64.100/
# 查看该服务器的配置信息

nginx的安装和全局配置,nginx,github,运维

nginx的安装和全局配置,nginx,github,运维

修改进程数
vim /apps/nginx/conf/nginx.conf
# 进入 nginx 的主配置文件

worker_processes  1;
# 这是原来的配置,只有一个进程(worker)
# 把 1 修改为 2 就会有2个 worker
worker_processes  auto;
# 当为 auto 时,进程数和你的内核数相同

ps axo pid,cmd,psr,ni|grep nginx
# 可以看到 nginx 的 worker 数量

nginx的安装和全局配置,nginx,github,运维

进程与内核绑定

将Nginx工作进程绑定到指定的CPU核心,保证此进程不会运行在其他核心上,极大减少了nginx的工作进程在不同的cpu核心上的来回跳转,减少了CPU对进程的资源分配与回收以及内存管理等,因此可以有效的提升nginx服务器的性能。

vim /apps/nginx/conf/nginx.conf
# 编辑主配置文件

worker_processes  2;
worker_cpu_affinity 00000001 00000010;
# 将任务绑定到内核1和内核2上

ps axo pid,cmd,psr,ni|grep -v grep |grep nginx|sort -n
# 查看进程,多次使用可以查看是否固定内核

nginx的安装和全局配置,nginx,github,运维

worker优先级

当你想将nginx的work进程的优先级调高 可以使用nice设置

vim /apps/nginx/conf/nginx.conf
# 编辑主配置文件

worker_priority -20;
# 工作进程优先级,-20~19数值越小,优先级越高

nginx的安装和全局配置,nginx,github,运维

nginx的安装和全局配置,nginx,github,运维

设置worker打开的文件的上限

所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致

vim /apps/nginx/conf/nginx.conf
# 修改配置文件

worker_rlimit_nofile 65536;
# 修改文件可以打开的最大数量

nginx的安装和全局配置,nginx,github,运维文章来源地址https://www.toymoban.com/news/detail-679828.html

到了这里,关于nginx的安装和全局配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

    1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过direct

    2024年02月14日
    浏览(36)
  • 【运维】Linux安装Nginx并部署前端项目的两种方式【内/外网-保姆级教程】

    目录 第一种方式 1准备nginx安装包并解压 2执行以下命令,安装nginx依赖包 3编译安装nginx 4验证安装 第二种方式 1下载所需要的安装包 2安装步骤 2.1将下载的完整文件夹通过压缩包的形式,上传到你的路径下解压. 2.2 进入到gcc文件夹下,执行命令: 2.3进入到gcc-c++文件夹下,执

    2024年02月04日
    浏览(39)
  • nodejs下载安装以及配置全局变量

    一、下载 官网下载: 1、https://nodejs.org/dist/v10.16.3/node-v10.16.3-win-x64.zip 2、http://nodejs.cn/download/ 注:根据自己的项目对应电的nodejs版本去下载对应的,否则肯出现项目无法运行的情况 二、安装 无脑下一步即可,安装完成后nodejs会自行配置全局变量 注:根据自己需求更换安装的

    2023年04月08日
    浏览(33)
  • 【运维】Linux安装Nginx并部署前端项目的两种方式【内 外网-保姆级教程】_linux部署前端项(1)

    1准备nginx安装包并解压 2执行以下命令,安装nginx依赖包 3编译安装nginx 4验证安装 第二种方式 1下载所需要的安装包 2安装步骤 2.1将下载的完整文件夹通过压缩包的形式,上传到你的路径下解压. 2.2 进入到gcc文件夹下,执行命令: 2.3进入到gcc-c++文件夹下,执行命令: 2.4检查

    2024年04月14日
    浏览(46)
  • node安装后的全局环境变量配置

    安装node时,位置最好不要装在c盘,这里,我在D盘下创建了文件夹\\\"node\\\",安装地址选择在该文件夹下 一直next,直到安装结束,打开\\\"node\\\"文件夹,安装完后,里面的配置文件和文件夹如下图所示: 打开黑窗口,输入dos命令,“node -v” ,测试node有没有安装成功,出现版本号即

    2024年02月09日
    浏览(37)
  • 【运维工程师学习】ubuntu20.04安装并配置SSH

    https://next.itellyou.cn/Original/#cbp=Product?ID=deb4715d-5e52-ea11-bd34-b025aa28351d 添加下载的镜像文件 设置用户信息 设置磁盘大小 检查硬盘可以Ctrl+c跳过 开始安装 再次查看本地ssh版本 验证是否开机自动启动 这里使用Xshell连接 输入ubuntu的账号和密码 链接成功

    2024年01月17日
    浏览(47)
  • MySQL运维14-管理及监控工具Mycat-web的安装配置

    Mycat-web(现改名为Mycat-eye)是对Mycat-server提供监控服务,通过JDBC连接对Mycat,MySQL监控,监控远程服务器的cpu,内存,网络,磁盘等情况的使用。Mycat-web运行过程中需要依赖zookeeper,因此需要先安装zookeeper,下载地址如下: zookeeper:链接:  https://pan.baidu.com/s/1LiQ5qg15Lft0okUDYi9oGg 提取码:

    2024年02月04日
    浏览(35)
  • 【运维】hadoop 集群安装(三)hdfs、yarn集群配置、nodemanager健康管理讲解

    上篇简单说明了多节点的hadoop节点怎么安装,但是没有细致的分析hadoop相关配置,具体怎么根据环境进行配置,接下来我们对这些配置进行讲解 Daemon Environment Variable NameNode HDFS_NAMENODE_OPTS DataNode HDFS_DATANODE_OPTS Secondary NameNode HDFS_SECONDARYNAMENODE_OPTS ResourceManager YARN_RESOURCEMANAGER_OP

    2024年02月10日
    浏览(34)
  • Nodejs安装及环境变量配置(修改全局安装依赖工具包和缓存文件夹及npm镜像源)

    本机环境:win11家庭中文版 一、官网下载  二、安装              三、查看nodejs及npm版本号 1、查看node版本号 2、查看NPM版本号(安装nodejs时已自动安装npm)  四、配置npm全局下载工具包和缓存目录 1、查看安装目录  在本目录下创建node_global和node_cache目录,以后通过npm安装

    2024年02月14日
    浏览(32)
  • Linux-nginx(安装配置nginx、配置反向代理、Nginx配置负载均衡、动静分离)

    关于代理 正向代理: 客户明确知道自己访问的网站是什么 隐藏客户端的信息 目录 关于代理 一、Nginx的安装与配置 1、安装依赖 2、安装nginx (1)上传压缩包到目录 /usr/nginx里面 (2)解压文件 (3)进入到nginx的文件夹下面 进行默认的配置  ./configure (4) Make make install (5)

    2024年01月21日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包