一、Nginx 核心功能全景图

Nginx核心功能
静态内容服务
反向代理
负载均衡
安全防护
性能优化
高效文件传输
缓存控制
gzip压缩
隐藏后端
请求转发
WebSocket支持
轮询
权重分配
IP哈希
SSL/TLS
访问控制
防火墙
连接复用
缓存加速
HTTP/2

二、核心功能详解

静态内容服务优化矩阵

配置指令功能描述最佳实践性能影响
root网站根目录使用SSD存储
expires浏览器缓存静态资源设置长期缓存极高
gzip压缩传输对文本类型启用压缩
sendfile零拷贝传输启用sendfile on极高
tcp_nopushTCP优化与sendfile搭配使用
open_file_cache文件描述符缓存open_file_cache max=1000

负载均衡策略对比

策略类型配置指令工作原理适用场景缺点
轮询round-robin顺序分配请求默认均衡策略不考虑服务器负载
权重轮询weight=3按权重比例分配服务器性能不均静态配置
IP哈希ip_hash相同IP固定后端会话保持需求扩展性差
最少连接least_conn选择连接最少长连接服务计算开销大
响应时间fair (第三方)最快响应优先性能敏感服务需额外模块

Nginx 功能概述

Nginx 是高性能的 Web 服务器和反向代理服务器,主要功能包括:

  1. 静态内容服务:高效处理 HTML、CSS、JS 等静态文件
  2. 反向代理:将客户端请求转发到后端应用服务器
  3. 负载均衡:在多台服务器间分配请求流量
  4. SSL/TLS 终止:处理 HTTPS 加密连接
  5. 访问控制:基于 IP、用户认证等机制限制访问

功能作用详解

1. Nginx 核心功能

静态内容服务

server {root /var/www/html;  # 网站根目录index index.html;    # 默认首页
}
  • 支持高效静态文件处理
  • 支持 gzip 压缩减少传输量
  • 支持浏览器缓存控制

反向代理配置

location /app {proxy_pass http://backend_server;proxy_set_header Host $host;
}
  • 隐藏后端服务器信息
  • 支持负载均衡到多个后端
  • 支持 WebSocket 代理

2. 访问控制

基础认证

auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
  • 保护敏感目录
  • 支持多用户管理
  • 密码加密存储(bcrypt)

IP 访问控制

location /admin {allow 192.168.1.0/24;deny all;
}
  • 按网络范围限制访问
  • 支持动态 IP 黑白名单
  • 可与认证结合使用

3. HTTPS 安全配置

证书管理

ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
  • 支持 RSA/ECC 证书
  • 支持 OCSP Stapling
  • 支持证书链配置

安全增强

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
  • 禁用不安全协议(SSLv3, TLSv1.0)
  • 启用前向保密(Perfect Forward Secrecy)
  • 启用 HSTS 强制 HTTPS

4. 性能优化

缓存配置

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
location / {proxy_cache my_cache;proxy_cache_valid 200 1h;
}
  • 减少后端服务器负载
  • 加速静态内容访问
  • 支持缓存清理接口

连接优化

keepalive_timeout 65;
keepalive_requests 100;
gzip on;
gzip_types text/plain application/json;
  • 减少 TCP 连接开销
  • 压缩传输内容
  • 支持 HTTP/2 协议

5. 日志与监控

分析需求awk命令功能描述输出示例
状态码统计awk '{print $9}'sortuniq -c
流量IP排名awk '{print $1}'sortuniq -c
请求URL统计`awk ‘{print $7}’sortuniq -c
响应时间分析awk 'NF > 1 {print 7, $NF}'sort -k2nr慢请求分析
流量时间分布awk '{print $4}'cut -d: -f1uniq -c

访问日志

log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent';
access_log /var/log/nginx/access.log main;
  • 自定义日志格式
  • 支持 JSON 格式日志
  • 实时流量监控

命令总结表格

演示命令功能描述关键参数
yum install nginx安装 Nginx
systemctl start nginx启动 Nginx 服务
nginx -t测试配置文件语法
nginx -s reload重载配置文件
htpasswd -c /path/to/file user创建密码文件-c 创建新文件
htpasswd /path/to/file user添加用户
openssl req -x509 -newkey rsa:2048生成自签名证书-x509 X.509证书格式
curl -u user:password URL带认证访问-u 用户名密码
curl -k https://URL忽略证书验证-k 不验证证书

一、Nginx 安装与基本配置

1. 安装 Nginx

# 添加EPEL仓库
[root@localhost ~]# yum install epel-release -y# 安装Nginx
[root@localhost ~]# yum install nginx -y# 启动并设置开机自启
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service

2. 验证安装

# 检查服务状态
[root@localhost ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2025-07-21 15:30:05 CST; 5s ago# 测试访问
[root@localhost ~]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.20.1

3. 基本配置

# 创建测试站点目录
[root@localhost ~]# mkdir -p /var/www/site1
[root@localhost ~]# echo "Site 1 Home" > /var/www/site1/index.html# 创建站点配置文件
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 80;server_name site1.localhost;root /var/www/site1;index index.html;
}# 重载配置
[root@localhost ~]# nginx -t && systemctl reload nginx
nginx: configuration file /etc/nginx/nginx.conf test is successful

二、用户认证配置

1. 创建密码文件

# 安装密码工具
[root@localhost ~]# yum install httpd-tools -y# 创建认证用户
[root@localhost ~]# htpasswd -c /etc/nginx/auth_users admin
New password: 
Re-type new password: 
Adding password for user admin# 添加第二个用户
[root@localhost ~]# htpasswd /etc/nginx/auth_users user

2. 配置认证

# 编辑站点配置
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 80;server_name site1.localhost;root /var/www/site1;index index.html;location /private {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/auth_users;}
}# 重载配置
[root@localhost ~]# nginx -s reload

3. 测试访问

# 尝试访问受保护区域
[root@localhost ~]# curl http://site1.localhost/private
HTTP/1.1 401 Unauthorized
Server: nginx/1.20.1
WWW-Authenticate: Basic realm="Restricted Area"# 使用认证访问
[root@localhost ~]# curl -u admin:password http://site1.localhost/private
Site 1 Private Area

三、HTTPS 配置

1. 生成自签名证书

# 创建证书目录
[root@localhost ~]# mkdir /etc/nginx/ssl
[root@localhost ~]# cd /etc/nginx/ssl# 生成私钥和证书
[root@localhost ssl]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout site1.key -out site1.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Localhost/CN=site1.localhost"

2. 配置 HTTPS 站点

# 编辑配置文件
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 443 ssl;server_name site1.localhost;root /var/www/site1;index index.html;ssl_certificate /etc/nginx/ssl/site1.crt;ssl_certificate_key /etc/nginx/ssl/site1.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;
}# HTTP重定向到HTTPS
server {listen 80;server_name site1.localhost;return 301 https://$host$request_uri;
}# 重载配置
[root@localhost ~]# nginx -s reload

3. 测试 HTTPS

# 跳过证书验证测试
[root@localhost ~]# curl -k https://site1.localhost
Site 1 Home# 查看证书详情
[root@localhost ~]# openssl s_client -connect site1.localhost:443 -showcerts

学习进阶路径

基础配置
安全加固
性能优化
高可用架构
动态模块
源码开发

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

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

相关文章

AtCoder Beginner Contest 418

文章目录A Im a teapotB Youre a teapotC FlushD XNOR OperationE TrapeziumF Were teapotsG Binary OperationAtCoder Beginner Contest 418A I’m a teapot Takahashi is a teapot. Since he is a teapot, he will gladly accept tea, but will refuse any other liquid. Det…

多级缓存详解

多级缓存 传统缓存: 传统缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库。 这种模式下请求一定要经过Tomcat处理,Tomcat的性能就成为了整个系统的瓶颈;并且Redis的缓存也有过期时间,一…

接口自动化-JSON Schema

目录 1.介绍 2.安装 3.使用 3.1type关键字 3.2最大值最小值 3.2.1minimum 、 maximum 3.2.2 exclusiveMinimum 、exclusiveMaximum 3.3字符串特殊校验 3.4数据约束 3.5对象约束 3.6必须属性 3.7依赖关系 4.总结 1.介绍 JSON Schema 是一个用来定义和校验 JSON 的…

前端技术架构设计文档(Vue2+Antd+Sass)

前端技术架构设计文档(Vue2AntdSass) 文档信息项目名称前端系统(基于 Vue2 技术栈)技术栈核心Vue2 Ant Design Vue Sass版本号V1.0.0技术栈核心Vue2 Ant Design Vue Sass编制日期2025-08-071. 技术栈选型 1.1 核心技术框架类别…

【设计模式】抽象工厂模式 (工具(Kit)模式)

抽象工厂模式(Abstract Factory Pattern)详解一、抽象工厂模式简介 抽象工厂模式(Abstract Factory Pattern) 是一种 创建型设计模式(对象创建型模式),它提供了一种创建一系列相关或相互依赖对象…

Android初学者系统开发学习路线参考

Android初学者系统开发学习路线参考 文章目录Android初学者系统开发学习路线参考一、前言二、Android初学的学习计划第一阶段(一个月)UI相关学习:开发环境与 UI 基础,第一周:UI 控件与布局进阶,第二周&…

扩散LLM推理新范式:打破生成长度限制,实现动态自适应调节

随着 Gemini-Diffusion,Seed-Diffusion 等扩散大语言模型(DLLM)的发布,这一领域成为了工业界和学术界的热门方向。但是,当前 DLLM 存在着在推理时必须采用预设固定长度的限制,对于不同任务都需要专门调整才…

【ee类保研面试】其他类---计算机网络

25保研er,希望将自己的面试复习分享出来,供大家参考 part0—英语类 part1—通信类 part2—信号类 part3—高数类 part100—self项目准备 文章目录计算机网络知识点大全**计算机网络知识点总结**一、五层协议模型二、OSI七层模型补充三、TCP 与 UDP 及区别…

Python-机器学习(一)——特征工程

目录 特征工程 一、特征提取 1、字典特征提取 2、文本特征提取 2.1 英文文本提取 2.2 中文文本提取 3、TF-IDF文本特征词的重要程度特征提取 二、无量纲化-预处理 1 MinMaxScaler 归一化 2 normalize归一化 3 StandardScaler 标准化 三、特征降维 1、特征选择 1.…

谈谈SQL计算存储引擎中的索引和计算

背景 最近在这家公司做了一些事情,做的事情和以往的工作不太一样,不一样的点呢就是 之前我主要的工作是关注计算这方面,因为数据量大,研究的是怎么加速查询,怎么研究规则去优化,怎么去解规则的bug等等。因为…

vscode.window.activeTextEditor 获取不到 png 图片路径问题

vscode 的 extensions 插件开发时用 vscode.window.activeTextEditor?.document.uri 获取不到编辑器打开的图片路径,文档路径可以获取到。个人猜测因为图片不能编辑,所以没有 activeTextEditor 属性吧。解决办法:巧用右键获取路径和相对的路…

Java 大视界 -- Java 大数据在智能医疗手术机器人操作数据记录与性能评估中的应用(390)

Java 大视界 -- Java 大数据在智能医疗手术机器人操作数据记录与性能评估中的应用(390)引言:正文:一、传统手术机器人的 “黑箱困境”:记不全、算不清、追不到1.1 设备与临床的 “断层”1.1.1 数据记录 “太粗放”1.1.…

C++的结构体指针

结构体变量和结构体指针的区别特性结构体变量结构体指针存储内容结构体的实际数据内存地址内存开销结构体总大小固定4/8字节(指针大小)成员访问运算符.->函数传参时的行为值拷贝(新副本)地址传递(操作原数据&#x…

pdf文件转word免费使用几个工具

在线工具(无需安装) Smallpdf ✅ 核心功能: 网页端直接操作,支持 PDF 与 Word 格式互转 免费用户每日限 2 次转换(免注册) 自动清除服务器文件,确保隐私安全 🔗 访问链接&#xff1a…

Vue3 组件化开发

文章目录前言组件化开发底部菜单 TabMenu父子组件相互传数据父传子:自定义属性子传父:自定义事件父子组件互传案例插槽 slot多个插槽总结组件化开发总结Vue组件的基本组成子组件使用的三个步骤父子组件相互传递数据前言 提示:这里可以添加本…

服务器硬件电路设计之I2C问答(二):I2C总线的传输速率与上拉电阻有什么关系?

I2C 总线传输速率与上拉电阻关系密切。上拉电阻阻值决定总线电平切换速度:电阻越小,充放电电流越大,信号边沿更陡,支持更高速率(如 400kHz 快速模式);电阻过大则切换慢,限制速率&…

大语言模型提示工程与应用:LLMs文本生成与数据标注实践

提示词应用实践 学习目标 本课程通过LLMs生成情感分析样本和标注葡萄9品鉴数据,展示了其文本生成和数据标注能力。同时,利用PAL模型解决日期计算问题,学习了LLMs与编程运行时结合实现复杂推理的方法,为自然语言处理应用提供了实…

node.js 零基础入门

Node.js 零 基础入门与核心语法 适用对象:完全没接触过 Node.js 的同学 目标:从 0 到能写 CLI、小型 HTTP 服务、文件脚本、调用系统/网络资源 目录 什么是 Node.js安装与运行运行脚本与 REPL模块体系:CommonJS 与 ES Modules基础语法在 Node…

《Day3-PyTorch 自动微分入门:从计算图到梯度下降的实践指南》

八、自动微分自动微分模块torch.autograd负责自动计算张量操作的梯度,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,可以实现网络权重参数的更新,使得反向传播算法的实现变得简单而高效。1. 基础概念张量Torch中一切皆为张量…

apache cgi测试

test.cgi #!/bin/sh echo "Content-type: text/html" echo "" echo "<h1>Hello from a Mac CGI script!</h1>" echo "<p>Current time is: $(date)</p>"ƒ% 放置目录 /opt/homebrew/Cellar/mapserver/8.4.0_1…