type
Post
status
Published
date
Apr 1, 2023
slug
summary
事情是来自我们公司内部引用了一个开源系统,其架构为Django + React,但部署的服务是我们临时是使用内网穿透的本地机器,且开启ssl和反向代理后所遇到的问题
tags
Linux
category
爱折腾
icon
password
Property
Apr 7, 2023 07:53 AM
事情是来自我们公司内部引用了一个开源系统,其架构为Django + React,但部署的服务是我们临时是使用内网穿透的本地一台普通机器,但使用穿透和反向代理后所遇到的问题
 

🧐问题来源

由于我们后台服务会处理url,拼接好host再将url给前端,亦或是请求自身的静态资源时,由于我们反代的原因导致request的scheme无法传递到django中
notion image
 

🤔问题分析

  1. 一般情况下我们部署前端项目是由前端提前将后端的host配置env中,本次所遇问题类似,但情况不同
  1. 由于是django并没有做前后端分离,其提供web服务的能力是由django + uwsgi,所以我们的js是在django项目中
  1. 在请求阶段我们完全可以通过用户request的scheme、http_host来区分用户的请求域名和http协议,这点是完全OK的,但当我们又上了一层frp内网穿透 + nginx 并且开启了ssl,情况就变了
  1. 当用户请求公网nginx时,nginx反向代理转发frp的8100端口时,是用什么协议呢?若是用户请求发起的是https ,我们配置nginx proxy_pass 是http://localhost 其就会导致https的请求信息并没有传到django中,而django解析出来的request.scheme为http
但是配置proxy_pass 为https时,用户请求http时就会有问题,除非开启强制https
 
简单粗暴解决方案:在公网nginx的 location / 和 location .js 中所设置直接开启全局过滤替换
 
更简单的方式是开启强制https,并且proxy_pass 为https://xxx ,但并不是我想要的效果
 
 
notion image
 
FFmpeg分布式切片解决方案Java高并发核心编程 卷2-阅读笔记(一)
Loading...