项目部署至服务器 :如何在Nginx反向代理中将HTTP/HTTPS混合请求处理?让我来看看~

1、问题导向

先来简单介绍一下项目背景,在一个三端(两个管理员网页端+小程序端)项目中遇到的问题:

(1)项目架构

  • 两个管理员网页端(HTTP)
  • 一个小程序端(需要HTTPS)
  • 后端服务(小程序要求HTTPS,所以需要部署域名,配置了SSL)

(2)具体问题

  • 小程序端:需要HTTPS,已配置域名并正常工作
  • 管理员网页端:使用HTTP,通过IP访问
  • 当后端配置SSL后,网页端请求报错400 (Bad Request)

2、错误信息

复制代码
POST http://[服务器ip]:5174/api/admins/login 400 (Bad Request)
Request failed with status code 400

3、解决方案

在Nginx配置文件中,修改反向代理配置:

复制代码
location /api/ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 1.添加一行
    proxy_set_header X-Forwarded-Proto $scheme;  # 标识原始协议类型
    # 2.将http改为https
    proxy_pass https://[服务器ip]:8090/;  
}

4、原理解析

(1)Nginx反向代理的协议转换机制

  • 客户端(浏览器)发送HTTP请求到Nginx
  • Nginx将请求转换为HTTPS并转发到后端服务器
  • 整个转换过程对客户端透明

(2)请求流程

|--------------------------------------|
| 客户端(HTTP) -> Nginx -> 后端服务器(HTTPS) |

  • 前端页面:发起HTTP请求
  • Nginx:将请求升级为HTTPS
  • 后端:接收HTTPS请求并处理

这样Nginx就承担了协议转换的角色,前端到Nginx:HTTP通信,Nginx到后端:HTTPS通信 。保证了后端通信安全性的同时不影响前端访问。

5、总结

这就是为什么当操作页面发送请求的时候,在网络面板看到HTTP请求,但系统仍然能正常工作的原因。nginx在这里扮演了一个协议转换器的角色,使得前端可以继续使用HTTP,而后端则确保了HTTPS的安全性。

相关推荐
网硕互联的小客服2 小时前
服务器经常出现蓝屏是什么原因导致的?如何排查和修复?
运维·服务器·stm32·单片机·网络安全
witton2 小时前
Go语言网络游戏服务器模块化编程
服务器·开发语言·游戏·golang·origin·模块化·耦合
成都极云科技2 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆2 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
刘阿宾2 小时前
【华为昇腾|CUDA】服务器A6000显卡部署LLM实战记录
服务器·华为·语言模型·gpu算力·kylin
海外空间恒创科技2 小时前
恒创科技:香港站群服务器做seo站群优化效果如何
运维·服务器·科技
搬码临时工2 小时前
内网服务器怎么设置公网远程访问? windows桌面连接和Linux自带SSH外网异地跨网用完整步骤教程
运维·服务器·ssh
苹果醋32 小时前
Vue3组合式API应用:状态共享与逻辑复用最佳实践
java·运维·spring boot·mysql·nginx
用户58126769320083 小时前
记一次腾讯云轻量级服务器 Docker 拉取镜像失败的深度排查
服务器
海外空间恒创科技4 小时前
香港站群服务器与普通香港服务器对比
服务器·git·github