什么是nginx 、安装nginx

一、 什么是nginx

1.1 nginx的概念

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

1.2 nginx模块与作用

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

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

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

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

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

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

二、怎么在shell上安装 nginx

2.1编译安装

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安装依赖包   
useradd -M -s /sbin/nologin nginx
#新建nginx用户便于管理

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

tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
#解压软件包
mkdir /apps/nginx -p


./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


make    
make install

chown -R nginx.nginx /apps/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
 

2.2 yum安装

yum安装有缺点:会少包

Centos7 需要安装epel源
 
cd /etc/yum.repos.d
vim epel.repo
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
gpgcheck=0
 
yum install -y epel-release
 
yum install nginx -y

三、nginx的信号使用

信号    解释
nginx -v    显示版本
nginx -V    
显示编译详细情况、模块等信息

nginx -t    
检查语法格式

nginx -T    打印当前配置
nginx -s    发送信号
nginx -s stop    立即关闭
nginx -s quit    优雅退出,不影响业务的状态下退出
nginx -s reload    重新加载配置文件
nginx -s  USR1    分割日志
nginx -s  USR2    优雅升级
nginx -g 'user zhangsan;'     以张三身份运行,默认是以nginx身份
nginx -g 'daemon off;'    前台运行命令

四、nginx调优

关闭版本或修改版本
 修改启动的进程数
cpu与work 进程 绑定
nginx进程的优先级
调试work进程打开的文件的个数
服务是否已后台方式运行

4.1 关闭版本或修改版本

4.2 隐藏nginx名称

vim  /opt/nginx-1.18.0/src/core/nginx.h

#隐藏nginx,进入配置文件

vim  /opt/nginx-1.18.0/src/http/ngx_http_header_filter_module.c

#修改第二个配置文件

4.3 修改启动的进程数

vim /apps/nginx/conf/nginx.conf

[root@localhost ~]#ps axo pid,cmd,psr,ni|grep nginx
#可以看到 nginx的  worker数量
 18620 nginx: master process /usr/   0   0
 18621 nginx: worker process         2   0
 18622 nginx: worker process         3   0
 18623 nginx: worker process         0   0
 18624 nginx: worker process         3   0
 18641 grep --color=auto nginx       0   0

4.4 cpu与work 进程 绑定

CPU序号:
CPU MASK: 00000001:0号CPU
          00000010:1号CPU
          ................
            10000000:7号CPU
worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号---第3号CPU   
#序号绑定cpu    亲缘性
worker_cpu_affinity 00000101 00001010;
#同一个work  可以绑定  两个cpu可以这么写 但是不建议,本来就是 不希望飘动,这样也是飘动


实际操作
例子:

vim  /apps/nginx/conf/nginx.conf
user nginx;
worker_processes auto;
worker_cpu_affinity 00000001 00000010;
#绑定到  第一 和 第二块cpu上
error_log /var/log/nginx/error.log;
#注意 要绑一起绑

4.5 nginx进程的优先级

vim  /apps/nginx/conf/nginx.conf

worker_priority 0; 
#工作进程优先级,-20~20(19)

ps axo pid,cmd,psr,ni|grep nginx|sort -n

查看所占cpu和优先级

ps -elf 可以查看所有程序优先级

4.6 调试work进程打开的文件的个数

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

4.7 服务是否已后台方式运行

一般服务都是后台运行,前台容器中会用到

user nginx;
worker_processes 2;
worker_cpu_affinity 00000101 00000010;
daemon off;
#加入此选项

4.8 event事件

events {
   worker_connections  65536;  #设置单个工作进程的最大并发连接数
   use epoll;
   #使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。
   accept_mutex on; 
   #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on
   multi_accept on; 
   #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on
}

五、Nginx的核心配置指令

1.访问状态统计配置

cd /usr/local/nginx/sbin
#根据安装路径自由修改/apps/nginx/sbin也可
nginx -V

Active connections ∶ 表示当前的活动连接数;
server accepts handled requests∶表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数已处理的请求数。
可curl http∶//192.168.79.210/status 结合 awk与if 语句进行性能监控。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/694578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARM处理器运行Windows系统的三防加固平板|亿道三防

大家好!今天我要为大家介绍一款引人注目的三防加固平板电脑——亿道三防系列产品。它们采用高通ARM处理器,并能够运行Windows 11操作系统,给用户带来了前所未有的强大性能和多样化的应用体验。 首先,让我们来聊聊这款平板电脑的核…

2024最新版Redis安装使用指南

2024最新版Redis安装使用指南 Installation and Usage Guide to the Latest Redis in 2024 By JacksonML 1. 什么是Redis? The open-source, in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, an…

星河做市基金会全球DAO社区启动,为数字货币市场注入新活力

2024年的数字货币市场即将迎来一次重要的历史性时刻 — 比特币减半,这四年一次的事件将成为全球数字资产市场的焦点,预示着新一轮的牛市浪潮即将到来。在这个关键时刻,星河做市基金会展现出其作为区块链行业领先市值管理公司的独特魅力。 GA…

初体验 在Dell R7525 服务器 RTX 3090 安装Chat with RTX

理论上是不建议在服务器上安装消费级的显卡,奈何数据中心的显卡需要额外的License才能体验RTX功能或者需要修改模式的方式如 A40 是可以做切换的。 一开始安装是失败的,现在想起来应该是和网络是相关的,所有首先需要做好科学网络才行&#x…

一文了解大数据生态

大数据一词最早指的是传统数据处理应用软件无法处理的过于庞大或过于复杂的数据集。 现在,对“大数据”一词的使用倾向于使用预测分析、用户行为分析或者其他一些从大数据中提取价值的高级数据分析方法,很少用于表示特定规模的数据集。 定义 大数据是…

通过Django实现获取当前时间

需求 通过访问 http://localhost:8080/timer&#xff0c;能够获取到当前的时间。 实现步骤 第一步&#xff1a;新增templates/home/timer.html&#xff0c;不存在的目录则新建目录 <!DOCTYPE html> <html lang"en"> <head><meta charset&qu…

LeetCode 450.删除二叉搜索树中的节点和669.修建二叉搜索树思路对比 及heap-use-after-free问题解决

题目描述 450.删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;…

[Android]Frida-hook环境配置

准备阶段 反编译工具:Jadx能够理解Java语言能编写小型的JavaScript代码连接工具:adb设备:Root的安卓机器&#xff0c;或者模拟器 Frida&#xff08;https://frida.re/&#xff09; 就像是你计算机或移动设备的妙妙工具。它帮助你查看其他程序或应用内部发生的事情&#xff0…

pipx — 在隔离环境中安装和运行 Python 应用程序

pipx官网&#xff1a; https://pipx.pypa.io/stable/ pipx pipx 是一个用于安装和运行Python应用程序的工具&#xff0c;它类似于 Linux的 apt 和JavaScript 的 npx 。 pipx和pip的区别&#xff1a; pip是一个通用的python包安装工具pipx专注于安装python cli程序 cli&#…

IP分片重组功能的模拟实现

实现一个IP分片重组的程序涉及到对IP数据报的解析&#xff0c;特别是处理标识、DF&#xff08;Don’t Fragment&#xff09;、MF&#xff08;More Fragments&#xff09;标志、片偏移&#xff08;Fragment Offset&#xff09;和总长度&#xff08;Total Length&#xff09;这几…

Unity坦克炮台永远看向鼠标

Unity坦克炮台永远看向鼠标 原理&#xff1a;射线检测 从屏幕上鼠标的位置&#xff0c;垂直向内发射一条射线&#xff0c;得到射线交互点的坐标&#xff0c;炮台一直看向交互点即可。 代码 public GameObject 炮台; private Ray MouseRay; private RaycastHit MouseRaycast…

117.填充每个节点的下一个右侧节点指针II、104.二叉树的最大深度、111.二叉树的最小深度

题目链接/文章讲解/视频讲解&#xff1a; 代码随想录 1.117.填充每个节点的下一个右侧节点指针II 1.1分析及思路 和116.填充每个节点的下一个右侧节点指针是一样的&#xff0c;我们都用队列&#xff0c;一层一层的指。前n-1个都指向其队列后面的元素。 1.2代码及注释 typed…

TLS、运输层安全协议

目录 运输层安全协议 1 协议 TLS 的要点 1.1 协议 TLS 的位置 1.2 TLS 与应用层协议独立无关 1.3 协议 TLS 具有双向鉴别的功能 1.4 TLS 建立安全会话的工作原理 TLS 的握手阶段 TLS 的会话阶段 1.5 TLS 传送的记录格式 2 协议 TLS 必须包含的措施 运输层安全协议 现…

代码随想录算法训练营|day34

第八章 贪心算法 860.柠檬水找零406.根据身高重建队列452.用最少数量的箭引爆气球代码随想录文章详解 860.柠檬水找零 定义five,ten为顾客付5元和10元的张数&#xff0c;找零时首先找较大面额&#xff0c;分情况讨论&#xff1a; 如果顾客付5元&#xff0c;直接five 如果顾客付…

Python urllib模块学习

HTTP协议 HTTP 协议&#xff1a;一般指HTTP(超文本传输)协议。 HTTP是为Web浏览器和Web服务器之间的通信而设计的&#xff0c;基于TCP/IP通信协议嘞传递数据。 HTTP消息结构 客户端请求消息 客户端发送一个HTTP请求到服务器的请求消息包括以下格式 请求行(request line)请求…

Vue3 (父子组件传参)

父组件通过v-bind&#xff08;简写 :&#xff09;绑定一个数据&#xff0c;然后子组件通过defineProps接受传过来的值。 给Menu组件 传递了一个title 字符串类型是不需要v-bind <template><div class"layout"><Menu title"我是标题">…

Nginx被动健康检测配置

我使用 Nginx 做负载均衡&#xff0c;有时候可能某一台服务器可能会临时出问题&#xff0c;无法访问。这个时候就需要检测服务器是否有问题&#xff0c;这里的检测方式有两种&#xff1a; 1、被动健康检测 就是会判断请求在规定时间内是否报错&#xff0c;如果连续报错多少次…

mysql 2-20

TEXT类型 枚举类型 SET类型 二进制字符串类型 BLOB类型 注意事项 JSON类型 提取数据 空间类型 选择建议 约束

HQYJ 2024-2-21 作业

复习课上内容&#xff08;已完成&#xff09;结构体字节对齐&#xff0c;64位没做完的做完&#xff0c;32位重新都做一遍&#xff0c;课上指定2字节对齐的做一遍&#xff0c;自己验证&#xff08;已完成&#xff09;两种验证大小端对齐的代码写一遍复习指针内容&#xff08;已完…

如何通过本地消息表实现分布式事务?

本地消息表步骤 通过本地消息表&#xff08;也称为可靠消息表&#xff09;实现分布式事务是一种常见的做法&#xff0c;用于保证在分布式环境中消息的可靠传递和事务的一致性。以下是使用本地消息表实现分布式事务的一般步骤&#xff1a; 消息生产方&#xff08;也就是发起方&…