如何通过svg代码还原图片_如何通过nginx反向代理来调试代码?
现在公司项目都是前后端分离的方式开发,有些时候由于某些新需求开发或者 bug 修改,想要让前端直接连到我本地开发环境进行调试,而前端代码我并没有,只能通过前端部署的测试环境进行测试,最简单的办法就是直接改 host 把后端测试环境的域名指向我本地的 IP,这对于 HTTP 协议的服务来说是很轻易做到的,不过公司的测试环境全部上了 HTTPS,而我本地的服务是 HTTP 协议这样就算是改了 host 也会由于协议不同导致请求失败,所以需要将本地的服务升级成 HTTPS 才行。
方案
其实 springboot 本身就支持 HTTPS( howto-configure-ssl ),但是这需要改项目代码不太优雅,于是就想直接用 nginx 反向代理到本地服务,这样在 nginx 层面做 HTTPS 就不需要改代码了,只需修改 host 将 后端测试环境域名 指向 nginx 服务的 IP 即可,而且可以适用于其它的 HTTP 服务开发调试。
签发证书
首先要生成一套证书用于 nginx 的 ssl 配置,直接使用 openssl 工具生成一套 根证书 和对应的 服务证书 。
- 根证书生成
# 生成一个RSA私钥openssl genrsa -out root.key 2048# 通过私钥生成一个根证书openssl req -sha256 -new -x509 -days 365 -key root.key -out root.crt -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=fakerRoot"
- 服务器证书生成
# 生成一个RSA私钥openssl genrsa -out server.key 2048# 生成一个带SAN扩展的证书签名请求文件openssl req -new -sha256 -key server.key -subj "/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=xxx.com" -reqexts SAN -config
这样就得到了三个关键文件:
root.crtserver.keyserver.crt
注:生成的服务器证书域名要支持测试环境访问的域名,否则浏览器会提示证书不安全。
nginx 配置
为了方便,直接使用 docker 启动了一个 nginx 容器进行访问,并将证书和配置文件挂载到对应的目录:
- nginx.conf
server { listen 443 ssl; server_name _; ssl_certificate "/usr/local/nginx/ssl/server.pem"; ssl_certificate_key "/usr/local/nginx/ssl/server.key"; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:3000; proxy_redirect off; proxy_http_version 1.1; }}
通过配置 ssl_certificate 和 ssl_certificate_key 来指定服务器的证书和私钥, proxy_pass 指定开发环境的访问地址。
- 启动
docker run -d --name https -p 443:443 -v ~/forword/ssl:/usr/local/nginx/ssl -v ~/forword/config/nginx.conf:/etc/nginx/conf.d/default.conf nginx
将 nginx 配置和证书相关文件挂载至对于的目录,并暴露 443 端口,这样服务启动后即可通过 https 访问到本地开发环境了。
安装根证书
由于服务证书是自己签发的,并不会被浏览器所信任,所以需要将 根证书 安装至操作系统中。
- 打开 chrome 浏览器->设置->高级->管理证书
- 受信任的根证书颁发机构->导入
- 选择之前生成的根证书 root.crt 导入即可
修改 host
在需要调试时,只需要将本地服务启动,再将 host 中将要测试的域名解析到 nginx 服务器的 IP,即可将前端请求转发到开发环境上,通过浏览器地址栏的 小锁图标 可以看到证书,已验证服务已经部署成功。
后记
本文中其实已经提到了两种解决方案了,其实还有其它的解决方案,例如使用 fidder 这种中间人攻击的方式来实现,这里就不做多叙了。
如何通过svg代码还原图片_如何通过nginx反向代理来调试代码?相关推荐
- nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题
在前面写的一篇文章SpringMVC解决跨域问题,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式 ...
- 如何通过svg代码还原图片_【UWA学堂】如何通过技术美术师来弥合代码与艺术之间的鸿沟?...
原文标题:The Code/Art Divide: How Technical Artists Bridge The Gap 这是一篇最初发表在<游戏开发者>上的技术文章,作者Jason ...
- 使用nginx负载均衡的webservice wsdl访问不到_谁说前端不用懂,Nginx 反向代理与负载均衡(超实用)...
谁说前端不需要懂-Nginx反向代理与负载均衡 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用一句别人开玩笑的话来说,java十年前的技术现在还能 ...
- nginx 反向代理(完成图片回显示效果)
1. Nginx 1.1 Nginx服务器介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索 ...
- sql server代理无法启动_谁说前端不需要懂Nginx反向代理与负载均衡
作者 | chenhongdong 链接 | https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入 ...
- 【完整教程】nginx反向代理wss,实现不修改服务器端websocket代码加密通讯请求
最近在用go语言的leaf框架开发H5游戏的服务器端,用websocket的方式进行服务器与客户端之间的通讯.然后之前都是本地websocket开发,要部署到facebook平台的时候,平台要求与第三 ...
- docker安装_使用docker在带有SSL的Nginx反向代理后面部署Quarkus或任何基于Java的微服务...
docker安装 已经有一段时间了,但是根据一位朋友的要求,我将向您展示如何使用docker在Nginx反向代理后面部署Quarkus微服务. 我们会做什么- 我将在centos 8主机上安装dock ...
- nginx请求转发被拒绝_解决nginx反向代理proxy不能转发header报头
做了一个德国高防plesk卖虚拟主机,奈何地理位置太过于遥远,控制台使用上速度难以接受.用户站点可以使用cloudflare等等的加速手段,控制台能否也这么干呢?理论是完全可以的,那么时间上手看吧.安 ...
- html svg导出图片,将SVG保存为图片_唐霜的博客
原文:http://techslides.com/save-svg-as-an-image SVG超赞,但是有的时候你想把它转换为其他的图片格式,比如jpg或png.如果你用d3.js创建了一些图表, ...
最新文章
- armv8 汇编 绝对地址赋值_ARMv8带来的变化
- POJ--3268--Silver Cow Party【SPFA+邻接表】
- Linux 使用ntpdate自动对时
- mysql --prompt
- centos6.6安装hadoop-2.5.0(四、hadoop HA安装)
- 698. Partition to K Equal Sum Subsets
- LeetCode 1504. 统计全 1 子矩形(记录左侧的连续1的个数)
- 学习笔记之23-typedef
- 从闭包到 语法糖 装饰器
- 浮点上下文中的整数除法
- mnist数据集无法下载
- 有PMP证书后,如何继续成长?
- 10.5NOIP模拟考 dfs序+贪心
- 树的计数 + prufer序列与Cayley公式 学习笔记
- asyncore斗鱼弹幕抓取
- 如何获取计算机网络地址,如何查看电脑网卡获取的IP地址是多少?
- 新浪微博批量取消关注引发的思考
- [HSI论文阅读] | Deep Feature Extraction and Classification of Hyperspectral Images Based on CNNs
- Python使用阿里API进行情感分析
- AES128加密算法的实现(C/Java/C#)
热门文章
- Win11cpu不支持怎么办,Win11cpu不支持解决方法
- (Activiti6.0.0)SpringProcessEngineConfiguration配置bean时属性注入不了,问题已经找到
- linux 改路由表 宕机,网管宕机,服务停止?别担心,解决方案来了
- 移动端上下拖动调整顺序效果_HTML5 移动端的上下左右滑动问题
- 表达式和返回值(JS)
- java 静态初始化数据_Java 静态数据初始化的示例代码
- hash地址_hash 算法原理及应用漫谈
- 机器视觉硬件选型——镜头选型
- 【mysql处理远程登陆授权及数据库迁移备份问题】
- 看上90亿的当当,海航的眼光是极好的