1. ✅nginx复杂跳转

  • 客户端ip不是内网(172.16/192.168)ip时,维护文件存在时,返回503或者错误页面

1.1. 📝修改配置文件

server {listen 80;server_name re.linux.cn; root /app/code/re/;set $flag 0;if (  $remote_addr  !~*  "^172.16|^192.168" ) {set $flag 1;}if ( -f /etc/nginx/weihu.txt  ) {set $flag  ${flag}1;  }if ( $flag = 11 ) {return 503;#return 302 http://re.oldboy.cn/error.html;}if ( $request_method  !~*  "GET|POST|HEAD" ) {return 405;}location / {index index.html;}
}

1.2. 📁创建维护文件

touch /etc/nginx/weihu.txt

1.3. 🔄重启服务

nginx -t
systemctl reload nginx

1.4. 🌏使用10网段访问

2. ✅nginx中的case语句

  • map类似shell中的case语句
  • 问题:配置nginx负载均衡监控检查功能check,后端web节点会产生大量的检查日志(访问日志)
  • 解决:web服务器上配置根据不同的UA进行判断
    • 如果UA是lb_check则不记录访问日志
    • 如果UA是其他的则记录访问日志
  • map做判断,access_log有个if选项
access_log /var/log/nginx/lb_access.log main if=0或1; 0不记录

2.1. 📌map用法

map $源变量 $目标变量 {default     值;条件1       值1;条件2       值2;...
}
  • map 必须写在 http 块中。
  • $源变量 可以是任何内置变量或之前定义的变量(如 $host, $http_user_agent, $request_method 等)。
  • $目标变量 是你自定义的新变量名。
  • default 表示默认值,当没有匹配时使用。

2.2. 📝修改配置文件

  • 判断UA
map $http_user_agent $log {"~*lb_check|curl|wget" 0;default                1;
}server {listen 80;server_name lb.linux.cn;root /app/code/lb/;access_log /var/log/nginx/lb-access.log  main if=$log;error_log /var/log/nginx/lb-error.log   notice;location / {index index.html;}
}

2.3. 🔄重启服务

nginx -t
systemctl reload nginx

2.4. 🔍测试

1.web02上测试
curl -A lb_check -H Host:lb.oldboy.cn http://10.0.0.7
curl -A lb -H Host:lb.oldboy.cn http://10.0.0.72.web01上查看日志
tail -f /var/log/nginx/lb-access.log

3. ✅rewrite

  • 功能与return类似

在 Nginx 中,returnrewrite 都可以用于实现URL 重定向或跳转,但它们的功能、行为和适用场景完全不同。下面详细对比它们的区别:

3.1. 🧩基本概念

特性

return

rewrite

类型

控制流指令

URL 重写指令

是否发送 HTTP 响应

是(直接返回响应)

否(修改请求后继续处理)

主要用途

立即返回状态码或跳转到新地址

修改 URL 路径,内部跳转或外部重定向

支持的状态码

支持所有标准 HTTP 状态码(如 200, 301, 302, 403, 404 等)

仅支持 301、302、303、307、308 的跳转

3.2. 📌 用法详解与示例

3.2.1. 🔹 return:立即返回指定的 HTTP 响应

3.2.1.1. 语法:

return [状态码] [重定向地址];

3.2.1.2. 示例 1:返回错误页面

location /error {return 404;
}

3.2.1.3. 示例 2:301 永久重定向

location = /old-page {return 301 https://example.com/new-page;
}

3.2.1.4. 示例 3:直接返回字符串内容(常用于调试)

location /hello {return 200 "Hello World!";
}

3.2.1.5. 实例 4:return + 变量

server {listen 80;server_name baidu.linux.cn;return 301 http://www.baidu.cn$request_uri;
}

⚠️ 注意:return 一旦执行,Nginx 就不会再处理后续的逻辑,而是立即返回响应

3.2.2. 🔹 rewrite:重写 URL,控制请求路径

3.2.2.1. 语法:

rewrite 正则表达式 替换内容 [flag];
  • 支持正则匹配
  • 可以配合 break, last, redirect, permanent 等 flag 使用

rewrite标记(flag)

redirect

302临时跳转,新旧地址都可以用

permanent

301永久跳转,旧地址SEO排名取消,只用新地址

break

类似exit,后面还有其他的可以匹配location不会继续匹配

last

类似continue结束当前匹配,进行下个location匹配

3.2.2.2. 示例 1:内部重写(不改变浏览器地址)

rewrite ^/user/(\d+)$ /profile.php?id=$1 break;
  • 浏览器看到的是 /user/123,服务器实际处理的是 /profile.php?id=123

3.2.2.3. 示例 2:302 临时重定向

rewrite ^/old-path$ /new-path redirect;
  • 返回 302,浏览器地址栏会变成 /new-path

3.2.2.4. 示例 3:301 永久重定向

rewrite ^/old-blog/(.*)$ https://blog.example.com/$1 permanent;
  • 返回 301,适合 SEO 权重转移

3.3. 🧠 核心区别总结

对比项

return

rewrite

是否中断请求处理

✅ 是,立即返回响应

❌ 否,继续处理新的 URL

是否可带响应体

✅ 可以自定义内容

❌ 不行,只能跳转或改写 URL

是否支持正则

❌ 不支持

✅ 支持

是否可用于 URL 重写

❌ 不可做内部重写

✅ 可以做内部重写

是否更高效

✅ 更快,因为不继续处理

❌ 相对慢一点(需要重新匹配 location)

3.4. 💡 使用建议

场景

推荐使用

需要立即返回错误或内容

return

需要做复杂的 URL 匹配和重写

rewrite

做 SEO 友好的永久跳转

return 301rewrite ... permanent

临时跳转测试

return 302rewrite ... redirect

内部路径映射(浏览器地址不变)

rewrite + break

3.5. 🔍 综合对比示例

配置

行为

return 301 https://example.com;

立即返回 301,浏览器跳转

rewrite ^/old$ /new redirect;

返回 302,跳转到 /new

rewrite ^/old$ /new break;

不跳转,内部将 /old 映射为 /new 处理

return 403;

立即返回 403 错误

rewrite ^/api/(.*)$ /v2/api/$1 break;

内部重写 API 路径,浏览器无感知

4. ✅https(数字证书)

  • https == http over tls进行你加密
  • 网站,申请https证书文件.(公钥(证书),私钥)
  • 对外:一般申请/购买使用(网站,app,小程序)
  • 对内:自己创建

4.1. ☀️申请证书方式

  • 通过命令创建(自建证书),其他人访问,提示网站不安全.
  • 申请免费证书(有效期是3个月);阿里云,Let's Encrypt
  • 正式:购买
  • 证书根据加密与安全方式分类

4.2. 🌏阿里云上申请ssl证书

4.2.1. 在数字证书管理服务中选择ssl证书管理,点击立即购买

4.2.2. 选择个人测试证书,点击立即购买

4.2.3. 支付

4.2.4. 登录管理控制台

4.2.5. 创建证书

4.2.6. 输入域名,选择快速签发,提交审核

4.2.7. 审核通过后选择证书下载到电脑上

4.3. 🚀部署ssl证书

4.3.1. 将ssl证书存放到/etc/nginx/keys/目录下

4.3.2. 修改nginx配置文件

server {listen 80;server_name www.zhubl.xyz;return 302 https://www.zhubl.xyz$request_uri;access_log off;
}
server {listen 443 ssl http2;server_name www.zhubl.xyz   ;ssl_certificate     /etc/nginx/keys/zhubl.xyz.pem;ssl_certificate_key /etc/nginx/keys/zhubl.xyz.key;root /app/code/ssl/;location / {index index.html;}
}

4.3.3. 重启nginx服务

#检查配置文件
nginx -t#重启
systemctl reload nginx#检查端口
ss -lntup | grep nginx

4.3.4. 浏览器访问

http://www.zhubl.xyz
自动跳转
https://www.zhubl.xyz

4.4. 🔍监控

  • https证书是否过期,30天
#1.获取过期日期,转换为秒 
date_expire=`curl -s -v -o /dev/null https://www.jd.com|& grep 'expire date'|awk -F: '{print $2}'` 
date_expire_seconds=`date +%s -d "$date_expire"`
date_now_seconds=`date +%s`
days_left=`echo "($date_expire_seconds - $date_now_seconds )/86400 "|bc `

4.5. 🌈自建证书

#创建私钥 私钥server.key 
openssl genrsa -idea -out server.key 2048 #根据私钥创建 证书 server.crt .pem证书 
openssl req -days 36500 -x509 -sha256 - nodes -newkey rsa:2048 -keyout server.key - out server.crt

5. ✅nginx配置优化

server {listen 443 ssl;keepalive_timeout 70;#指定ssl加密协议的版本 不要 加上TLSv1.0不安全. ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;#加密算法. 需要排除不安全的算法#排除null空算法, md5算法 ssl_ciphers AES128- SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4- MD5:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5;ssl_certificate /usr/local/nginx/conf/cert.pem;ssl_certificate_key /usr/local/nginx/conf/cert.key;#设置https 会话缓存 10MB大小的空间用于 存储缓存. ssl_session_cache shared:SSL:10m;#超时时间 10分钟ssl_session_timeout 10m;
}

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

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

相关文章

基于pcl点云库实现激光雷达数据采集

基于pcl点云库实现倍加福R2000激光雷达数据采集 一、项目介绍二、开发详情三、显示效果展示四、说明 一、项目介绍 最近用pcl库实现了倍加福R2000激光雷达的数据采集,并实时在viewer上实时更新显示。软件的开发是基于vs2019qt插件pcl库实现,可以完成如下…

微信小程序61~70

1.组件wxml的slot-插槽 在使用基础组件时,可以在组件中间写子节点,从而将子节点内容展示到页面中,自定义组件也可以接收子节点但是要在组件模板中定义节点,承载组件中间的子节点需要使用多个插槽时,要在组件.js中声明…

03_性能优化:让软件呼吸更顺畅

引言 在用户对软件响应速度近乎苛刻的今天,性能已成为产品竞争力的核心指标。据Google研究,页面加载时间每增加1秒,转化率就会下降20%。本文将从前端、后端、移动端三个维度,揭示性能优化的核心策略与实战技巧,帮助你打…

LangChain4j 框架模仿豆包实现智能对话系统:架构与功能详解

系统整体架构设计基于 LangChain4j 框架构建的智能对话系统采用 "前后端分离 大模型中枢" 的三层架构设计,实现了与豆包类似的智能交互体验。系统架构图如下所示:┌────────────────────────────────────…

基于uni-app的书法学习管理小程序的设计与实现

一、设计的目的 书法是中华民族传统文化的瑰宝,更是人类文明的宝贵财富,具有深远的意义和实价值。在当今数字化时代,随着信息技术的飞速发展,传统书法学习模式面临着诸多挑战和需要解决的问题。为推动书法学习的现代化转型&#…

NumPy 函数库在数学建模中的基本使用方法

一、引言 在数学建模的世界里,我们常常需要处理大量的数据和进行复杂的数值计算。Python 中的 NumPy 库就像是一位得力的助手,它为我们提供了强大的多维数组对象和丰富的数学函数,让我们能够高效地完成各种数值计算任务。接下来,我们将深入探讨 NumPy 在数学建模中的基本使…

模块三:现代C++工程实践(4篇)第一篇《C++模块化开发:从Header-only到CMake模块化》

引言:现代C工程化的核心挑战(终极扩展版) 在云计算与物联网时代,C项目规模呈指数级增长。传统Header-only开发模式暴露出编译效率低下、依赖管理混乱、版本冲突频发等致命问题。本文通过CMake 3.22Conan 2.0工具链的深度集成&…

uniapp启动图被拉伸问题

记录下: 安卓手机有不同的规格,很难所有规格都去适配。如果不适配所有机型,那么就会导致部分机型的启动图被拉伸。 安卓提供了.9.png图片格式,允许标注部分拉伸,这样启动图中间的logo就不会被拉伸。 下面2张图是没有…

stm32的三种开发方式

以下是针对STM32F103RC实现LED闪烁(PC13引脚)的三种开发方式示例代码,每种方式均保持相同的核心逻辑: 1. 寄存器开发方式(直接操作寄存器) #include "stm32f10x.h"int main(void) {// 1. 开启G…

SpringBoot问卷调查系统设计与实现

概述 基于SpringBoot开发的问卷调查系统,该系统集成了问卷管理、题目管理等多种功能模块。 主要内容 核心功能模块: ​​个人信息管理​​: 修改密码个人信息修改 ​​问卷管理​​: 问卷新增问卷修改问卷删除 ​​题目管理​…

Linux进程管理:从基础到实战

在 Linux 系统编程中,进程(Process) 是操作系统进行资源分配和调度的基本单位。理解进程的概念是掌握系统编程、多任务处理、并发编程的基础。 目录 一、什么是进程? 定义: 二、进程的生命周期 示例:查…

工业物联网中的 Modbus:传感器与网关通信实战(二)

四、实战案例解析 4.1 项目背景与目标 某智能工厂致力于提升生产过程的自动化和智能化水平,对生产线上的各种设备进行实时监控和数据分析。在该工厂的一个生产车间中,存在着大量的传感器,用于监测设备的运行状态、环境参数等信息。这些传感…

飞算 JavaAI 智控引擎:全链路开发自动化新图景

免责声明: 此文章的所有内容皆是本人实验测评,并非广告推广,并非抄袭。如有侵权,请联系,谢谢! 文章目录📝前言一、飞算 Java AI 智能开发助手简介1.1何为飞算 Java AI智能助手?2.2 飞算Java AI 直击开发全场…

MYSQL数据库(九)MVCC-多版本并发控制

目录 一 前景导入 1 当前读 2 快照读 二 MVCC 1 隐藏字段 2 UndoLog 回滚日志 (1 UndoLog日志 (2 UndoLog版本链 3 Read View 面试八股 介绍一下MVCC 一 前景导入 1 当前读 可使当前事务读取的是最新版本的数据,读取时还要保证其他并发事务不能修改当中…

[Pytest] [Part 2]增加 log功能

开始实现需求之前先做个log类,可以给其他模块使用,也方便以后修改log类的功能和属性。 使用的是python中的logging包来进行简单的封装,具体代码如下 import logging import sysclass TefLogger:def __init__(self, logger_nameTEST_FRAMEWOR…

NeighborGeo:基于邻居的IP地理定位(三)

NeighborGeo:基于neighbors的IP地理定位 X. Wang, D. Zhao, X. Liu, Z. Zhang, T. Zhao, NeighborGeo: IP geolocation based on neighbors, Comput. Netw. 257 (2025) 110896, 3. NeighborGeo 本文提出NeighborGeo,利用图结构学习和有监督对比学习来建立可靠的地标-目标关…

python使用fastmcp包编写mcp服务端(mcp_server)和mcp客户端(mcp_client)

安装fastmcp pip install fastmcp编写mcp服务端代码 from fastmcp import FastMCP mcp FastMCP(weather)mcp.tool() def get_weather(city: str):获取对应城市的天气:param city: 目标城市:return: 该城市的天气return f"{city}天气晴朗,温度60度&#xff01…

(1)机器学习小白入门 YOLOv:从概念到实践

(1)机器学习小白入门YOLOv :从概念到实践 (2)机器学习小白入门 YOLOv:从模块优化到工程部署 (3)机器学习小白入门 YOLOv: 解锁图片分类新技能 目标检测一直是一个机器学习的一个重要的应用方向。而 YOLOv(You Only Look Once&…

Appium 简介

Appium 是一个开源的移动应用自动化测试框架,用于测试原生应用(native)、混合应用(hybrid)和移动网页应用(mobile web)。它支持 iOS、Android 和 Windows 平台。 https://www.bilibili.com/video/BV1R93szkEhi/? App自动化测试:App测试AppiumUiAutomato…

【C语言刷题】第十一天:加量加餐继续,代码题训练,融会贯通IO模式

🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题 🍉学习方向:C/C方向 ⭐️人生格言:为天地立心,为生民立命,为…