Nginx服务配置与优化

149 阅读4分钟

一、Nginx服务基础

1.概述

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

2.Nginx和Apache的优缺点比较

nginx相对于apache的优点∶

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

apache相对于nginx的优点∶

  • Rewrite比nginx的rewrite强大 模块多,基本想到的都可以找到少bug, nginx的bug相对较超稳定

存在的理由:一般来说,需要性能的web服务,用nginx。若不需要性能只求稳定,就选用apache。  Nginx处理动态请求是弱项,一般动态请求要Apache去做Nginx只适合处理静态网页或反向代理。

Nginx的进程

Nginx有两个进程:

master process:主进程(守护进程),用来管理工作进程。

worker process:工作进程,用来处理用户的请求。

二、编译安装nginx服务

1、安装依赖包

微信截图_20230823184104.png

微信截图_20230823184227.png

2.下载安装包

微信截图_20230823184422.png

3.解压安装包

微信截图_20230823184720.png

4.指定安装路径,用户,组

微信截图_20230824160700.png

5.编译和安装

微信截图_20230823185855.png

6.做个软链接

微信截图_20230823190148.png

7.检查配置文件

微信截图_20230823190420.png

8.查看pid号

微信截图_20230823190552.png

9.停止nginx服务

微信截图_20230824161103.png

10.重载服务

微信截图_20230823191133.png

11.日志分割

微信截图_20230823191935.png

12.创建Nginx 自启动文件

微信截图_20230824161453.png

微信截图_20230824161506.png

二.Nginx服务的主配置文件

2.1主配置文件位置:/usr/local/nginx/conf/nginx.conf

/usr/local/nginx/conf/ 目录下:

  • nginx.conf 是主配置文件
  • nginx.conf.default 是主配置文件的备份文件

2.2主配置文件中有六个主要模块:

1、全局块:全局配置,对全局生效。

2、events块:配置影响Nginx服务器与用户的网络连接。

3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。

4、server块:配置虚拟主机的相关参数,一个http块中可以有多个server 块。每个 server 块就相当于一个虚拟主机。。

5、location块:用于配置匹配的url,一个server块中可以有多个location块。

6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

2.3关闭版本或修改版本

微信截图_20230824173608.png

微信截图_20230824173500.png

2.4修改启动的进程数

微信截图_20230824182820.png

微信截图_20230824182955.png

2.5nginx进程的优先级(work进程的优先级)

nice的优先级是 -20 到 19

worker_priority 0;

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

微信截图_20230824183200.png

微信截图_20230824191603.png

微信截图_20230824191650.png

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

  • 所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接。

  • 另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致。

三.访问状态配置统计

3.1 查看nginx安装模块,是否包含HTTP_STUB_STATUS 模块

微信截图_20230825144617.png

3.2 修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

微信截图_20230825152706.png

微信截图_20230825152556.png

微信截图_20230825152902.png

在网页中输入 192.168.37.100/status测试

微信截图_20230825153123.png

注:

Active connections: 3 #当前活动链接数

server accepts handled requests 3 3 8 #表示已经处理的连接信息,三个数字表示已处理的连接数、成功的TCP握手次数、已处理的请求数 Reading: 0 Writing: 1 Waiting: 2。

3.3监控当前nginx并发量

可curl -Ls http://192.168.37.100/status 结合awk来写shell脚本,如果链接数过高报警

微信截图_20230825160627.png

微信截图_20230825160611.png

四.基于授权的访问控制(只有指定用户能访问)

设置只有指定用户才可以访问该网页,想要对哪个路径进行限制,就在location下添加路径和认证配置。

微信截图_20230825162542.png

微信截图_20230825163609.png

微信截图_20230825163719.png

微信截图_20230825164939.png

微信截图_20230825165105.png

微信截图_20230825165336.png

微信截图_20230825164911.png

微信截图_20230825165616.png

五.基于客户端的访问控制

设置只有指定IP/IP段才可以访问该网页,或指定IP/IP段不能访问。想要对哪个路径进行限制,就在location块下添加路径和控制规则。

微信截图_20230825170030.png

微信截图_20230825171404.png

微信截图_20230825170913.png

微信截图_20230825171226.png

六.配置nginx虚拟主机

6.1 基于域名的 Nginx 虚拟主机

6.1.1为虚拟主机提供域名解析

微信截图_20230826224850.png

6.1.2为虚拟主机准备网页文档

微信截图_20230826225207.png

6.1.3修改Nginx的配置文件

配置两个server块,分别设置不同的域名。

微信截图_20230826232633.png

微信截图_20230826232236.png

微信截图_20230826232336.png

微信截图_20230826232422.png

微信截图_20230826232906.png

微信截图_20230826232923.png

6.2 基于ip地址的nginx虚拟主机

两个server块,设置不同的监听地址即可,其他跟基于域名都一样。

例如:

6.2.1 设置临时ip,以达到一台服务器拥有多个ip地址,不同ip访问不同的服务页面

微信截图_20230826233433.png

6.2.2 修改配置文件,之后重启服务,访问测试。

微信截图_20230826233823.png

微信截图_20230826233823.png

微信截图_20230826233946.png

微信截图_20230826234243.png

微信截图_20230826234257.png.

6.3基于端口的nginx虚拟主机

修改ip后面的端口即可

微信截图_20230826235153.png

微信截图_20230826235057.png

微信截图_20230826234801.png

微信截图_20230826235030.png