nginx(笔记)

配置高可用集群

🧱 Nginx 高可用架构图(主流方案)

          ⬇️客户端请求┌───────────────┐│   Virtual IP  │  ← Keepalived 提供高可用浮动IP└──────┬────────┘│┌──────────┴──────────┐│                     │
┌──▼───┐             ┌───▼───┐
│Nginx主│             │Nginx备│   ← 两台Nginx组成主备
└──┬───┘             └───┬───┘│                      │▼                      ▼
多个后端应用服务器,如 Tomcat、SpringBoot、Node、PHP 等

📦 组件列表

组件说明
Nginx做反向代理、负载均衡
Keepalived提供 高可用虚拟 IP(VIP),主备切换
后端服务池实际处理业务请求的服务(Tomcat/SpringBoot等)

🔧 步骤一:部署两台 Nginx + Keepalived

比如:

主机名角色IP
nginx1master192.168.1.10
nginx2backup192.168.1.11
VIP虚拟IP192.168.1.100

🧰 步骤二:安装 Nginx 和 Keepalived(每台都装)

参考你上面安装的 nginx/keepalived 流程就行。

✍️ 步骤三:配置 Keepalived(主从)

🔷 主节点 /etc/keepalived/keepalived.conf

conf复制编辑vrrp_instance VI_1 {state MASTERinterface eth0               # 网卡名称,根据实际改virtual_router_id 51priority 100                 # 主的优先级高advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.1.100            # VIP 地址}
}

🔷 备节点 /etc/keepalived/keepalived.conf

c复制编辑vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 90                  # 比主低advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.1.100}
}

🚀 步骤四:配置 Nginx(两台一样)

你只需要配置一个负载均衡策略,监听 VIP 端口:

nginx.conf 示例:

nginx复制编辑http {upstream backend_servers {server 192.168.1.21:8080;server 192.168.1.22:8080;}server {listen 80;server_name localhost;location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
}

✅ 步骤五:启动服务并测试

bash复制编辑# 启动 keepalived(每台都启动)
systemctl start keepalived
systemctl enable keepalived# 启动 nginx(每台都启动)
systemctl start nginx
systemctl enable nginx

🧪 测试高可用效果

  1. 访问 http://192.168.1.100/ 应正常跳转到后端服务器。

  2. 关闭主 Nginx 节点:

    bash复制编辑systemctl stop keepalived
  3. 浮动 IP 会自动漂移到 backup 节点,访问仍正常。

🧠 可选:加入 Nginx 状态检测(高级)

vrrp_script chk_nginx {script "/etc/keepalived/check_nginx.sh"interval 2weight -20
}vrrp_instance VI_1 {...track_script {chk_nginx}
}

check_nginx.sh 内容:

#!/bin/bash
if ! pgrep nginx > /dev/null; thensystemctl stop keepalived
fi

https证书配置

https必须配置在nginx的443端口下面

基本配置

ssl_certificate /usr/local/nginx/cert/cert.crt;
ssl_certificate_key /usr/local/nginx/cert/cert.key;

Nginx HTTPS 相关完整配置汇总

nginx复制编辑server {listen 443 ssl http2;                       # 监听443端口,启用SSL和HTTP/2server_name yourdomain.com www.yourdomain.com;# 证书文件(请用你自己的路径和证书文件替换)ssl_certificate /path/to/fullchain.pem;   # 包含完整证书链的证书文件ssl_certificate_key /path/to/privkey.pem; # 私钥文件# TLS协议版本,禁用不安全的旧版本ssl_protocols TLSv1.2 TLSv1.3;# 加密套件(强加密,Mozilla推荐)ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';# 服务器优先使用自己的加密套件顺序,避免弱加密ssl_prefer_server_ciphers on;# SSL会话缓存,提升性能,避免重复握手ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;# 启用 OCSP Stapling(证书状态快速验证)ssl_stapling on;ssl_stapling_verify on;# 解析 OCSP 请求的 DNS 服务器resolver 8.8.8.8 8.8.4.4 valid=300s;resolver_timeout 5s;# HTTP Strict Transport Security (HSTS),强制客户端使用 HTTPSadd_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;# 防止内容被iframe嵌套,减少点击劫持攻击add_header X-Frame-Options SAMEORIGIN;# 防止XSS攻击add_header X-XSS-Protection "1; mode=block";# 禁用内容类型嗅探add_header X-Content-Type-Options nosniff;# 根目录和首页root /var/www/html;index index.html index.htm;location / {try_files $uri $uri/ =404;}# 反向代理示例(根据需求)location /api/ {proxy_pass http://127.0.0.1:8080/;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 日志路径(可根据需要修改)access_log /var/log/nginx/https_access.log;error_log /var/log/nginx/https_error.log;
}# HTTP 端口配置,重定向到 HTTPS
server {listen 80;server_name yourdomain.com www.yourdomain.com;# 所有请求跳转到 HTTPSreturn 301 https://$host$request_uri;
}

配置说明

配置项作用
listen 443 ssl http2;开启 HTTPS 和 HTTP/2 协议
ssl_certificate指定证书文件,需包含完整证书链(通常是 fullchain.pem
ssl_certificate_key指定私钥文件
ssl_protocols TLSv1.2 TLSv1.3;只允许 TLS1.2 和 TLS1.3,禁用过时协议
ssl_ciphers允许的加密算法,保证强加密
ssl_prefer_server_ciphers on;优先使用服务器推荐的加密算法顺序
ssl_session_cache缓存 SSL 会话,减少握手消耗
ssl_session_timeout会话缓存有效期
ssl_stapling on;启用 OCSP Stapling,提高证书状态验证速度
ssl_stapling_verify on;验证 OCSP 响应
resolverDNS 服务器,用于 OCSP 请求
add_header Strict-Transport-SecurityHSTS,强制客户端只能访问 HTTPS
add_header X-Frame-Options SAMEORIGIN;防止点击劫持
add_header X-XSS-Protection启用浏览器 XSS 防护
add_header X-Content-Type-Options nosniff;防止浏览器内容嗅探
root指定静态文件目录
location /api/反向代理示例,代理 API 请求到后端
access_logerror_log日志文件位置
listen 80 + return 301HTTP 请求跳转到 HTTPS

1. 客户端证书验证(双向认证)

双向 TLS 认证,除了服务器验证客户端,客户端也需提供证书,常用于高安全场景。

nginx复制编辑server {listen 443 ssl http2;server_name yourdomain.com;ssl_certificate /path/to/server.crt;ssl_certificate_key /path/to/server.key;ssl_client_certificate /path/to/ca.crt;    # 受信任客户端证书的CA证书ssl_verify_client on;                       # 开启客户端证书验证ssl_verify_depth 2;                         # 证书链最大深度# 其他ssl配置...location / {# 正常服务配置}
}
  • 客户端必须提供受信任CA签发的证书,否则连接被拒绝。

2. 限速限流配置(防攻击)

控制请求速率,防止刷接口、DDOS等攻击。

nginx复制编辑http {# 定义限制区域,1分钟最多10个请求limit_req_zone $binary_remote_addr zone=one:10m rate=10r/m;server {listen 443 ssl;server_name yourdomain.com;# 其他ssl配置...location /api/ {limit_req zone=one burst=20 nodelay;proxy_pass http://127.0.0.1:8080/;# 代理头...}}
}
  • limit_req_zone 定义速率限制区域。
  • limit_req 在具体路径生效,burst 允许短时突发,nodelay 表示超出限制立即拒绝。

3. 防盗链和 Referer 检查

只允许指定来源访问资源,防止被别的站盗用图片、视频等资源。

nginx复制编辑location /images/ {valid_referers none blocked yourdomain.com *.yourdomain.com;if ($invalid_referer) {return 403;}# 资源配置
}
  • valid_referers 设定允许的 Referer 来源。
  • $invalid_referer 变量判断是否非法来源。

4. gzip 压缩

减少传输体积,提高响应速度。

nginx复制编辑http {gzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;gzip_min_length 256;gzip_proxied any;gzip_comp_level 5;gzip_vary on;
}
  • 开启 gzip,指定压缩的内容类型,设置压缩级别等。

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

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

相关文章

聊聊AI大模型的上下文工程(Context Engineering)

聊聊AI上下文工程上下文工程(Context Engineering)技术简介 核心定义“上下文工程是一门精细的艺术与科学——其本质是在每个Agent执行步骤中,将恰到好处的信息精准填充至上下文窗口。” —— Andrej Karpathy(前特斯拉AI总监&…

searxng 对接openweb-UI实现大模型通过国内搜索引擎在线搜索

先看一下 qwen3-4b模型的效果 SearXNG简介:SearXNG 是一个免费的互联网元搜索引擎,它汇总了来自各种搜索服务和数据库的结果。用户既不会被跟踪,也不会被分析。 官方项目:https://github.com/searxng/searxng-docker 项目文档&a…

巨人网络持续加强AI工业化管线,Lovart国内版有望协同互补

在游戏行业全面迈入 AI 工业化时代的关键窗口期,巨人网络正以系统性布局和前瞻性战略加速AI内容生产闭环,其构建的AI工业化生产管线及多模态大模型能力矩阵,正释放出显著的生产效率和创意表达力。公司内部数据显示,自研AI代码生成…

TypeScript---class类型

一.简介 TypeScript 完全支持 ES2015 中引入的 class 关键字。 与其他 JavaScript 语言功能一样,TypeScript 添加了类型注释和其他语法,以允许你表达类和其他类型之间的关系。 1.字段 (1).在申明时同时给出类型 class Person {name: string;age: nu…

vue3中实现echarts打印功能

目录一、创建项目二、项目引入echarts1、下载依赖2、项目引用3、编写建议echarts图表三、打印功能1、增加打印按钮2、打印方法3、效果一、创建项目 老规矩,先从创建项目开始 npm create vitelatest print-demo(项目名称)第一步出现的框架选择vue,然后回车 第二步…

今日行情明日机会——20250711

上证指数放量收上影线,但依然强势,维持在5天均线上,后续调整后,上行的概率依然大;个股上涨偏多。深证指数缓慢上涨,已经突破下跌趋势线,目前依旧沿着5日线上行,后市依然值得期待。20…

「日拱一码」024 机器学习——防止过拟合

目录 数据层面 数据增强 数据正则化 ​数据采样 模型结构层面 简化模型 添加正则化层 早停法(Early Stopping) 训练过程层面 使用交叉验证 使用集成学习 调整学习率 防止过拟合是机器学习中一个非常重要的问题,它可以帮助模型在新…

持有对象-泛型和类型安全的容器

我们需要管理一批对象序列,但是又对实际运行的时候的对象类型和对象序列长度不确定的时候,用简单的对象引用无法满足,java有ArrayList,Map,Set等这些容器类提供,这些都实现了Collections接口,所以都属于Collections类。…

《财税企业经营管理秘籍(一):行业适配的获客方式》

在财税服务这片竞争激烈的红海中,客户资源如同氧气——没有它,企业寸步难行。然而残酷的现实是,许多财税企业正深陷“获客泥潭”:投入巨大精力与成本,换来的却是转化渺茫、增长停滞的困境。高质量线索,已成…

使用tensorflow的多项式回归的例子(一)

多项式回归例1%matplotlib inlineimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as plttrX np.linspace(-1, 1, 101)num_coeffs 6trY_coeffs [1, 2, 3, 4, 5, 6]trY 0for i in range(num_coeffs):trY trY_coeffs[i] * np.power(trX, i)trY np.rand…

STM32F103C8T6基于HAL库驱动NB-IoT模块BC26通信详 解

一、引言: NB-IoT技术与应用场景NB-IoT( Narrow Band Internet of Things )作为低功耗广域网( LPWAN )的核心技术,以其广覆 盖、低功耗、大连接、低成本的特性,广泛应用于智能表计、环境监测、…

iOS 性能测试工具全流程:主流工具实战对比与适用场景

在iOS开发中,性能优化往往被安排到开发后期,甚至上线前才临时补救。但性能瓶颈通常是架构设计、资源加载、动画机制等多方面共同作用的结果,仅凭肉眼感知和log输出,难以精准定位。 一套合适的性能测试工具组合,不仅能帮…

目标检测:视觉系统中的CNN-Transformer融合网络

一、背景 无人机(UAVs)在城市自动巡逻中发挥着重要作用,但它们在图像识别方面面临挑战,尤其是小目标检测和目标遮挡问题。此外,无人机的高速飞行要求检测系统具备实时处理能力。 为解决这些问题,我们提出了…

揭示宇宙的隐藏对称性:群论-AI云计算拓展核心内容

通过利用云计算,借助群论对宇宙对称性的探索,从离散群和李群等基础概念,逐步深入到量子力学和更高自旋系统中的高级应用。 对称性远不止是美学上的吸引力;它是编织在宇宙结构中的一个基本原则。从雪花的复杂图案到控制粒子的基本定…

前端项目vue3项目集成eslint@9.x跟prettier

tips: 这些涉及编辑器的修改不一定能及时生效,如果没有生效,可以试试重启编辑器窗口 编辑器集成 我的编辑器是vscode,需要安装这两个编辑器插件eslint prettier我这个配置主要是通过eslint提供的配置cli命令生成,在里面加入了对pr…

登录超时问题的排查方法与预防经验分享

​​一、排查方法​​​​检查网络连接​​确保网络稳定,尝试重启路由器或切换网络(如从WiFi切换到移动数据)。使用命令(如 ping 或 traceroute)测试网络连通性,排查是否存在丢包或高延迟。​​验证服务端状…

uniapp,Anroid10+版本如何保存图片并删除

Android 10系统开始 进一步增强了平台功能,为外部存储设备上的应用和用户数据提供了更好的保护。作为这项工作的一部分,平台引入了进一步的改进,以简化向分区存储的转换。 为了让用户更好地控制自己的文件,保护用户隐私数据&#…

Jenkins Pipeline 语法

Pipeline 简介 Jenkins2.x 的核心是使用 pipeline 来构建项目,也就是流水线,将 Jenkins1.0 版本中基于表单的配置信息比如 JDK/SVN 以及参数的配置都转变成了代码,即 pipeline as Code。 传统的表单方式有以下缺点: 需要大量的 web 表单交互,有时候需要进行很多次的切换…

搭建渗透测试环境

一、基于docker搭建靶场 #此步骤需要科学上网 #从软件源中下载 docker.io 和 docker -compose 软件包及其依赖项。 sudo apt-get install docker.io docker-compose #查看docker版本 docker -v #查看docker信息 docker info #重启docker服务 sudo systemctl daemon-reload sudo…

(一)OpenCV——噪声去除(降噪)

高斯滤波器(针对高斯噪声) 高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。 高斯滤波(Gaussian filter) 包含许多种,包括低通、带…