Nginx (介绍+安装+使用)

Nginx 介绍

在这里插入图片描述

​ Nginx(发音为“engine x”)是由伊戈尔·赛索耶夫开发的一个高性能的HTTP和反向代理服务器,支持反向代理,负载均衡,资源压缩,url重写,网站跳转等等功能。nginx以高效的epoll、kqueue、eventport作为网络IO模型,在高并发场景下,nginx能够轻松支持5W+的并发流量,并且消耗的服务器内存CPU资源很低,运行起来非常稳定。

要让Nginx支持高并发,如5万并发甚至百万级并发,需要进行一系列的配置优化和性能调优。以下是一些关键的优化步骤和考虑因素:
一、硬件与基础架构优化

1. 选择高性能硬件:使用多核CPU、大内存和高速存储的服务器硬件,确保Nginx能够充分利用硬件资源。
2. 负载均衡:使用负载均衡技术(如Nginx的负载均衡模块、HAProxy等)将请求分发到多个Nginx服务器上,实现水平扩展。
3. 网络连接:确保服务器拥有足够的网络带宽和低延迟的网络连接,以处理大量并发请求。

二、Nginx配置优化

1. worker进程数:根据CPU核心数调整worker_processes的值,通常设置为CPU核心数或核心数的两倍。
2. 事件驱动模型:使用epoll或kqueue等高效的事件驱动模型,以提高并发处理能力。
3. 连接数调整:增加worker_connections的值,以支持更多的并发连接。
4. 开启gzip压缩:通过gzip指令开启gzip压缩功能,减少传输的数据量,提高响应速度。
5. 调整缓存策略:合理配置缓存策略,如设置缓存期限、缓存大小等,以减少对后端服务器的请求压力。
6. 禁用不必要的模块:禁用不需要的Nginx模块,减少内存占用和CPU负载。

三、性能调优

1. TCP参数调优:调整TCP相关的参数,如tcp_nopush、tcp_nodelay、so_keepalive等,以优化网络传输性能。
2. 文件描述符限制:增加系统级别的文件描述符限制(ulimit -n),以支持更多的并发连接。
3. 内核参数调优:根据需要进行内核参数调优,如调整网络参数、IO调度策略等。

四、安全加固

1. 限制访问频率:使用Nginx的limit_req模块限制客户端的请求频率,防止DDoS攻击。
2. 限制并发连接数:使用limit_conn模块限制单个客户端的并发连接数。
3. HTTPS配置:启用HTTPS,配置SSL/TLS证书,确保数据传输的安全性。

五、监控与日志分析

1. 配置监控工具:使用如Nginx自带的ngx_http_stub_status模块、Prometheus、Grafana等工具进行性能监控和告警。
2. 日志分析:定期分析Nginx的访问日志和错误日志,找出性能瓶颈和潜在问题。  

Nginx企业作用

1.提供静态页面展示,网页服务  
2.提供多个网站、多个域名的网页服务
3.提供反向代理服务(结合动态应用程序)
4.提供简单资源下载服务(密码认证) ftp服务
5.用户行为分析(日志功能)

master进程

包工头进程,管理nginx的数据,创建worker工作进程。

1.启动时检查nginx.conf是否正确,语法错误;
2.根据配置文件的参数创建、且监控worker进程的数量和状态;
3.监听socket,接收client发起的请求,然后worker竞争抢夺链接,获胜的可以处理且响应请求。
4.接收运维发送的管理nginx进程的信号,并且将信号通知到worker进程。
5.如果运维发送了reload命令,则读取新配置文件,创建新的worker进程,结束旧的worker进程。

worker进程

1.实际处理client网络请求的是worker
2.master根据nginx.conf决定worker的数量
3.有client用户请求到达时,worker之间进程竞争,获胜者和client建立连接且处理用户请求;
4.接收用户请求后,若需要代理转发给后端,则后端处理完毕后接收处理结果,再响应给用户
5.接收并处理master发来的进程信号,如启动、重启、重载、停止。

Nginx 安装

  • 源代码编译安装,优点
    • 版本,可以获取官网最新的软件包,甚至最新测试版,都可以直接编译安装
    • 还有稳定版本
    • 自由定义,安装路径自由定义,
    • 自由定义第三方插件
    • 缺点,安装步骤繁琐,耗时太长,看你要装多少个模块,编译添加的模块多,安装的就更久
  • rpm安装
    • 得提前准备好nginx本身的rpm包,以及相关依赖的rpm包
    • 用于离线安装nginx的环境
  • yum安装,你会用哪些形式的仓库?
    • 阿里云第三方仓库(centos-base.repo,epel.repo)
      • 这个其实都不靠谱。
    • 自建yum仓库(得提前准备好nginx本身的rpm包,以及相关依赖的rpm包)
    • nginx官网仓库(获取官网最新稳定版的yum源仓库)
      • yum一键安装,省心省事,版本也是有一定的保障的,rpm的安全性也是有保障的
官网yum仓库
源代码编译
离线的rpm安装(yum 自建仓库)

编译安装

在CentOS上编译安装Nginx,你可以按照以下步骤进行:

  1. 首先,确保你的系统已经安装了所有必要的依赖项。你可以使用以下命令来安装GCC编译器、PCRE库、zlib库和OpenSSL库:
sudo yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
  1. 接下来,下载Nginx的源代码包。
wget http://nginx.org/download/nginx-x.x.x.tar.gz

请将x.x.x替换为你下载的Nginx版本号。
3. 解压下载的源代码压缩包:

tar -zxvf nginx-x.x.x.tar.gz

同样,将x.x.x替换为你下载的Nginx版本号。
4. 进入解压后的Nginx源代码目录:

cd nginx-x.x.x
  1. 配置编译选项。你可以使用./configure命令来配置Nginx的编译选项。例如,如果你想指定Nginx的安装目录为/usr/local/nginx,并且以nginx用户和用户组的身份运行,你可以使用以下命令:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx

这将配置Nginx以使用/usr/local/nginx作为安装目录,并以nginx用户和用户组的身份运行。这有助于提高系统的安全性和管理性。
6. 编译并安装Nginx。在配置好编译选项后,你可以使用以下命令来编译和安装Nginx:

make && make install

这将开始编译过程,并在编译完成后安装Nginx。
7. 安装完成后,你可以通过以下命令来检查Nginx的状态:

/usr/local/nginx/sbin/nginx -t

如果返回的是syntax is oktest is successful,那么表示Nginx安装成功并且配置正确。
8. 启动Nginx并检查是否启动成功:

/usr/local/nginx/sbin/nginx

然后,你可以使用浏览器访问你的服务器的IP地址或域名,看看是否能正常显示Nginx的欢迎页面。如果能显示,那么表示Nginx已经成功启动并且可以正常工作了。

请注意,上述步骤中的版本号x.x.x应替换为你实际下载的Nginx版本号。另外,如果你还没有创建nginx用户和用户组,你需要先创建它们,可以使用以下命令:

sudo useradd -s /sbin/nologin nginx

这样,你就完成了在CentOS上编译安装Nginx的过程。

yum安装

更新系统软件包

sudo yum update

安装Nginx

sudo yum install nginx

Nginx.conf配置文件详解

# 定义Nginx运行的用户和用户组
user nginx;
 
# 启动进程,通常设置为CPU的核心数
worker_processes auto;
 
# 全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log warn;
 
# 进程PID文件位置
pid /var/run/nginx.pid;
 
# 一个nginx工作进程最大打开文件数
worker_rlimit_nofile 1024;
 
# 事件模块
events {
    # 每个进程的最大连接数
    worker_connections 1024;
}
 
# HTTP服务器配置
http {
    # 文件扩展名与文件类型映射表
    include       /etc/nginx/mime.types;
    # 默认文件类型
    default_type  application/octet-stream;
 
    # 日志格式定义
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
 
    # 访问日志路径
    #access_log  /var/log/nginx/access.log  main;
 
    # 是否开启发送文件的时间戳
    sendfile        on;
    # 开启tcp_nopush,减少网络发送次数
    tcp_nopush     on;
    # 开启tcp_nodelay,减少网络延迟
    tcp_nodelay    on;
    # 保持连接时间
    keepalive_timeout  65;
 
    # 包含其他的配置文件
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
 
# 设置服务器的标志图标
server_tokens on;


Nginx 使用

Nginx的常用命令包括:

  • 启动Nginx服务。可以在Nginx的安装目录下的sbin文件夹中进入,然后执行命令./nginx来启动Nginx服务。12

  • 检查Nginx配置文件。使用命令./nginx -t来检查Nginx配置文件是否有语法错误。12

  • 重新加载Nginx配置。在修改了Nginx的配置文件后,可以使用命令./nginx -s reload来重新加载配置,使修改后的配置文件生效。13

  • 停止Nginx服务。可以使用命令./nginx -s stop来快速停止Nginx服务,这种方式可能会丢失未保存的信息。或者使用命令./nginx -s quit来完整有序地停止Nginx服务,并保存相关信息。

  • 查看Nginx进程号。使用命令ps -ef | grep nginx可以查看Nginx的进程号。

  • 平滑重启Nginx。使用命令kill -HUP 主进程号来进行平滑重启。13

  • 强制停止Nginx。使用命令kill -9 主进程号来强制停止Nginx。

  • 从容停止Nginx。使用命令kill -QUIT 主进程号来从容停止Nginx。

  • 快速停止Nginx。使用命令kill -TERM 主进程号来快速停止Nginx。

在线自动生成nginx配置文件

在线生成

可以自由选择所需的应用,生成nginx配置作为参考。

根据你的业务需求,自动生成复杂的nginx配置文件,提供你作为参考,非常好用
  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歌颂平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值