IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:反向代理

共 10 篇相关文章

IT 累计浏览 43

解决访问 https 网站时,后端重定向或获取 URL 变成 http 的问题

在常见的Nginx反向代理后端Java应用的部署架构中,客户端与Nginx之间为HTTPS,但Nginx转发至后端服务器的请求协议为HTTP。这会导致后端应用通过`HttpServletRequest.getRequestURL()`获取到的URL为内网HTTP地址,且`HttpServletResponse.sendRedirect()`生成的重定向地址也为HTTP,无法反映真实的客户端访问协议。 解决此问题需结合Nginx配置与后端代码调整。对于URL获取问题,需在Nginx中通过`proxy_set_header Host $host`和`proxy_set_header X-Forwarded-Proto $scheme`向后端传递原始主机名与协议信息。后端Java应用则需通过自定义Servlet过滤器,读取`X-Forwarded-Proto`头并重写请求的`getScheme()`与`getRequestURL()`方法,确保返回正确的HTTPS URL。对于重定向问题,可通过Nginx的`proxy_redirect http:// $scheme://`指令,将后端响应中的Location头协议自动修正。 当架构中Nginx前存在负载均衡器时,需由负载均衡器透传`X-Forwarded-Proto`头,同时将Nginx配置中相关的`$scheme`变量替换为`$http_x_forwarded_proto`,以正确识别和传递最前端的访问协议。

IT 累计浏览 3,142

内网穿透神器frp

这篇讲的是内网穿透工具frp,它解决了开发者常遇到的一个痛点:如何让内网服务(比如公司内网的调试接口、家里的树莓派)安全便捷地暴露到公网。作者对比了之前流行的ngrok,指出其国内访问慢、配置复杂的问题,而frp凭借开源、速度快、配置简单的特点脱颖而出。 文章的核心是手把手教读者搭建frp。作者先解释了frp的基本架构:在外网服务器部署服务端(frpc),在内网设备部署客户端(frpc),通过简单的配置文件建立隧道。接着,文章展示了配置服务端监听端口和客户端代理SSH、HTTP服务的具体示例,整个过程清晰明了。 作者通过实际搭建经验(服务端跑在Google Cloud上,客户端连家里树莓派)验证了frp的效能,并提到该项目在GitHub上已有过万Star。最终,frp只需十分钟即可完成部署的便捷性,使其成为解决内网穿透问题的高效选择。

IT 累计浏览 2,206

nginx的SCRIPT_NAME, PATH_INFO多了index.php问题

这篇讲的是nginx配置中一个常见的坑:在设置反向代理后,PHP获取到的`SCRIPT_NAME`和`PATH_INFO`变量不正确,把整个URI路径都带上了。比如访问`/index.php/site/login`时,`SCRIPT_NAME`本应是`index.php`,却拿到了完整的路径字符串。 作者定位到问题出在正则表达式定义的`location`块配置不完整。核心解决思路是,需要将请求的URI明确拆解为“脚本文件名”和“附加路径信息”两部分。通过新增一个专门匹配`.php($|/)`的`location`块,并利用正则捕获组`"^(.+.php)(/.+)"`,就能精准地把`index.php`赋值给`$script`,把后面的`/site/login`赋值给`$path_info`。 最终,通过`fastcgi_param`指令将正确拆解后的值传递给PHP处理,使得`$_SERVER['SCRIPT_NAME']`和`$_SERVER['PATH_INFO']`能获得预期的值,保证了框架路由能正常工作。这个配置方法清晰地展示了如何在nginx层面解决路径解析歧义。

IT 累计浏览 3,398

nginx中location的匹配和rewrite

这篇文章来自一位工程师的实战经历,他在调整线上 Nginx 规则时,遇到了一个关于 `location` 匹配的“诡异”问题:明明配置了精确的路径规则,流量却匹配不上。 问题的根因在于 Nginx 对待 URL 的两个阶段存在处理差异。用户直接请求的 URL 会先进行“归一化”处理(例如合并多余的斜杠),但在配置文件中使用 `rewrite` 指令跳转后生成的新 URL,却不会再经历这一过程。这种不一致,极易导致配置失误。 文章用一个具体例子清晰演示了这一点:当 `rewrite` 规则不小心多写了一个斜杠,形如 `/newapi//api`,直接访问 `/api`(归一化后)就无法命中 `/newapi/api` 这个 `location`;而直接请求未归一化的 `/newapi//api` 反而可以匹配上。 作者通过这个踩坑经历,揭示了 Nginx 转发机制中一个容易被忽略的细节。对于需要编写复杂规则的运维和后端同学来说,理解这个机制差异,能帮助避免一些难以排查的线上配置故障。

IT 累计浏览 16,622

解析nginx负载均衡

对于构建大型网站来说,负载均衡是一个无法绕开的核心话题。虽然F5 BIG-IP、Citrix NetScaler这类专用硬件设备性能强大,但其高昂的成本让许多团队望而却步,因此灵活高效的负载均衡软件成了更务实的选择。 这篇讲的是nginx如何在这个领域脱颖而出。作者从工业生产的实际背景出发,指出nginx作为后起之秀,凭借其出色的反向代理功能与多样化的负载均衡策略,受到了广泛关注。文章没有停留在功能罗列,而是深入到设计与应用两个层面:既解析了nginx实现负载均衡的核心思路,也结合具体场景,展示了不同策略(如轮询、加权、IP哈希等)在实际部署中的考量与效果。 对于正在选型或希望优化现有架构的技术人员来说,这篇内容提供了一个从原理到实践的完整视角,帮助理解如何用软件方案有效分担后端压力,提升系统整体的可靠性与可扩展性。

IT 累计浏览 2,234

使用Kangle 做反向代理服务器

这篇讲的是如何在CentOS系统上部署Kangle反向代理服务器。文章从反向代理在CDN加速中的常见应用切入,直接给出了从安装依赖、下载源码到编译配置的全流程操作指南。 作者提供了两种安装路径:一种是标准步骤,通过yum安装编译工具链后下载指定版本源码进行编译;另一种是“懒人版”,步骤更精简,并附上了可直接访问的Web管理界面地址及默认账号。文中还特别提醒,登录后可在右上角切换为中文界面,并附上了官方教程链接作为延伸参考。 对于需要快速搭建测试环境或轻量级代理节点的运维人员来说,这篇操作笔记省去了寻找零散资料的麻烦,是一份可以直接照着做的实践清单。

IT 累计浏览 3,299

Nginx过滤hash ddos攻击

这篇讲的是Nginx环境中针对一种特定DDoS攻击的过滤实践。作者分享了他在面对利用Hash算法漏洞的拒绝服务攻击时,所采取的具体防御配置思路。 这类攻击通常通过构造特殊的HTTP请求,导致服务器在计算哈希值时消耗过多资源,从而陷入拒绝服务状态。作者并未纠缠于复杂的攻击原理分析,而是直接给出了一个实用的过滤方案。方案的核心在于通过Nginx的配置,对可疑的请求参数或特定模式进行识别与拦截,从而在请求到达后端应用之前就将其阻断。 虽然作者在文中提到这件事可能“过气了”,但这种防御思路对于理解如何利用Web服务器的前置过滤能力来抵御资源耗尽型攻击,依然有参考价值。它提供了一个轻量级的防御视角,即不一定非要升级硬件或部署复杂的防护设备,有时调整关键中间件的配置就能化解一部分威胁。

IT 累计浏览 2,322

更有效的进行前后台联调-让同一域名上的不同cgi访问不同的ip

这篇讲的是如何在前后台联调中,用更灵活的方式分配不同后端服务。作者指出,常见的通过修改hosts文件让整个域名指向单一测试环境的做法存在明显局限——当你需要同一个域名下的不同CGI(比如用户模块和支付模块)分别调试不同后端环境时,hosts就束手无策了。 文章的核心方案是利用本地代理工具(如Fiddler或Charles)的规则功能,实现基于URL路径的精细路由。例如,可以让域名下的/api/user/接口指向测试服务器A,而/api/pay/接口指向测试服务器B。作者具体展示了配置步骤和规则写法,并强调了这种方法在多人协同开发、微服务架构下的实用性:它避免了频繁切换hosts的麻烦,也更贴近线上真实请求路径。 最终效果是显著提升了联调效率和环境隔离的准确性。对于经常需要同时对接多个后台服务的前端或全栈开发者来说,这是一种值得掌握的本地调试技巧。

IT 累计浏览 9,093

解决 nginx 反向代理网页首尾出现神秘字符的问题

这篇讲的是一个隐蔽的nginx反向代理“副作用”:一台内网的MediaWiki服务器通过nginx代理对外提供服务时,所有返回404状态码的页面,HTML内容的头部和尾部都出现了额外字符——头部是几位随机的16进制数(如“355b”),尾部总是多出一个“0”。这个问题很奇怪,因为正常页面完全正常,且直接通过Apache访问原始服务器时也不会发生。 作者定位到问题的根源:nginx在向后端请求失败(如404)时,会默认启用一种“错误页面截断”机制来简化响应,但这意外地破坏了内容的完整性。解决方法其实并不复杂:在nginx配置中显式关闭`proxy_intercept_errors`,或者为404等错误状态码配置专门的、干净的错误页面,从而阻止nginx对后端返回的原始内容进行任何“处理”。这对于使用反向代理且注重页面内容完整性的开发者来说,是一个值得注意的配置细节。

IT 累计浏览 2,362

Squid的Linux下安装配置笔记(下)

这是Squid Linux安装配置系列的下篇,作者从上篇的安装基础出发,聚焦于配置实战环节。文章针对透明代理(反向代理)的部署场景,提供了完整的squid.conf配置文件示例,并逐行解析关键参数。 配置中,visible_hostname为Squid服务器命名,确保内部识别无误;cache_mgr指定了管理员邮箱,让Squid报错页面能直接联系到负责人,增强可维护性;http_port 80 vhost