nginx复杂跳转与https 📅 发布时间:2026/7/8 20:31:25 👁️ 浏览次数: 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.txt1.3. 重启服务nginx -t systemctl reload nginx1.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 if0或1; 0不记录2.1. map用法map $源变量 $目标变量 { default 值; 条件1 值1; 条件2 值2; ... }map 必须写在 http 块中。$源变量 可以是任何内置变量或之前定义的变量如 $host, $http_user_agent, $request_method 等。$目标变量 是你自定义的新变量名。default 表示默认值当没有匹配时使用。2.2. 修改配置文件判断UAmap $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 nginx2.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.7 2.web01上查看日志 tail -f /var/log/nginx/lb-access.log3. ✅rewrite功能与return类似在 Nginx 中return和rewrite都可以用于实现URL 重定向或跳转但它们的功能、行为和适用场景完全不同。下面详细对比它们的区别3.1. 基本概念特性returnrewrite类型控制流指令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. 示例 2301 永久重定向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. 实例 4return 变量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)redirect302临时跳转新旧地址都可以用permanent301永久跳转旧地址SEO排名取消只用新地址break类似exit后面还有其他的可以匹配location不会继续匹配last类似continue结束当前匹配进行下个location匹配3.2.2.2. 示例 1内部重写不改变浏览器地址rewrite ^/user/(\d)$ /profile.php?id$1 break;浏览器看到的是/user/123服务器实际处理的是/profile.php?id1233.2.2.3. 示例 2302 临时重定向rewrite ^/old-path$ /new-path redirect;返回 302浏览器地址栏会变成/new-path3.2.2.4. 示例 3301 永久重定向rewrite ^/old-blog/(.*)$ https://blog.example.com/$1 permanent;返回 301适合 SEO 权重转移3.3. 核心区别总结对比项returnrewrite是否中断请求处理✅ 是立即返回响应❌ 否继续处理新的 URL是否可带响应体✅ 可以自定义内容❌ 不行只能跳转或改写 URL是否支持正则❌ 不支持✅ 支持是否可用于 URL 重写❌ 不可做内部重写✅ 可以做内部重写是否更高效✅ 更快因为不继续处理❌ 相对慢一点需要重新匹配 location3.4. 使用建议场景推荐使用需要立即返回错误或内容return需要做复杂的 URL 匹配和重写rewrite做 SEO 友好的永久跳转return 301或rewrite ... permanent临时跳转测试return 302或rewrite ... redirect内部路径映射浏览器地址不变rewritebreak3.5. 综合对比示例配置行为return 301 https://example.com;立即返回 301浏览器跳转rewrite ^/old$ /new redirect;返回 302跳转到/newrewrite ^/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个月);阿里云,Lets 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 nginx4.3.4. 浏览器访问http://www.zhubl.xyz 自动跳转 https://www.zhubl.xyz4.4. 监控https证书是否过期30天#1.获取过期日期,转换为秒 date_expirecurl -s -v -o /dev/null https://www.jd.com| grep expire date|awk -F: {print $2} date_expire_secondsdate %s -d $date_expire date_now_secondsdate %s days_leftecho ($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.crt5. ✅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; }
nginx监控模块 1. ✅nginx的web监控检查下当前nginx是否有监控模块#查看nginx支持哪些模块 [rootweb01 ~]# nginx -V |& grep status configure arguments: --prefix/etc/nginx --sbin-path/usr/sbin/nginx --modules-path/usr/lib64/nginx/modules --conf-path/etc/nginx/nginx.conf --e… 2026/7/5 4:16:23
7个实用技巧掌握Java8 CompletableFuture异步编程精髓 7个实用技巧掌握Java8 CompletableFuture异步编程精髓 【免费下载链接】learn-java8 项目地址: https://gitcode.com/gh_mirrors/lea/learn-java8 Java8引入的CompletableFuture是处理异步编程的强大工具,它让复杂的异步任务处理变得简单直观。本文将通过实… 2026/7/6 16:32:05
RAG-3-Embeddings 在数学中,向量(也称为欧几里得向量、几何向量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小… 2026/7/8 13:13:17
基于TLA2518与TM4C123的高精度多通道数据采集方案 1. 项目背景与核心需求在工业测量和嵌入式系统中,模拟信号到数字信号的可靠转换是数据采集系统的关键环节。本项目基于德州仪器的TLA2518模数转换器(ADC)和TM4C123GH6PMI微控制器,构建了一个高精度、多通道的数据采集解决方案。TLA2518是一款12位分辨率、… 2026/7/8 20:31:03
App安全测试进阶:3种动态Hook技术(Frida/Xposed/ADB)实战与风险对比 App安全测试进阶:3种动态Hook技术实战与风险对比在移动应用安全测试领域,静态分析只能揭示冰山一角的潜在风险,而真正的安全威胁往往隐藏在运行时行为中。动态Hook技术作为安全测试人员的"手术刀",能够精准拦截和修改应… 2026/7/8 20:31:03
飞书授权登录安全加固:State 参数防 CSRF 攻击的 3 种实现方案对比 飞书OAuth 2.0授权登录的安全加固实践:State参数防御CSRF攻击的深度解析在当今企业级应用开发中,第三方授权登录已成为提升用户体验的关键组件。作为国内领先的企业协作平台,飞书开放了基于OAuth 2.0协议的授权登录能力,但许多开发… 2026/7/8 20:26:59
ISO 14229-1 UDS 安全访问实战:27服务种子密钥交换与3种NRC错误处理 ISO 14229-1 UDS 安全访问实战:种子密钥交换与NRC错误处理精要1. 安全访问机制的核心逻辑当ECU处于锁定状态时,27服务(SecurityAccess)是解锁受保护功能的唯一钥匙。这个看似简单的"请求种子-发送密钥"流程背后… 2026/7/8 20:26:59
HackMe-1 靶机实战:SQL注入到文件上传的 3 步完整攻击链复现 HackMe-1 靶机实战:从SQL注入到文件上传的完整攻击链剖析靶机环境与攻击路径总览HackMe-1是VulnHub平台上专为渗透测试学习者设计的初级难度靶机,其核心价值在于完整呈现了Web应用中三个典型漏洞的串联利用过程。与真实企业环境中常见的漏洞组合模式高度… 2026/7/8 20:22:53
Upload-Labs Pass-02/03 实战:Content-Type与黑名单绕过,2种方法成功率100% Upload-Labs靶场实战:Content-Type与黑名单绕过的双保险策略在Web安全领域,文件上传漏洞始终是渗透测试中的重点突破口。本文将深入剖析Upload-Labs靶场中Pass-02和Pass-03关卡的核心防御机制,通过两种成功率100%的实战绕过方法,带… 2026/7/8 20:22:53
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08