现在公司项目都是前后端分离的方式开发,有些时候由于某些新需求开发或者错误修改,想要让前端直接连到我本地开发环境进行调试,而前端代码我并没有,只能通过前端部署的测试环境进行测试,最简单的办法就是直接改主机把后端测试环境的域名指向我本地的IP,这对于HTTP协议的服务来说是很轻易做到的,不过公司的测试环境全部上了HTTPS,而我本地的服务是HTTP协议这样就算是改了主机也会由于协议不同导致请求失败,所以需要将本地的服务升级成HTTPS才行。
其实springboot本身就支持HTTPS (howto-configure-ssl),但是这需要改项目代码不太优雅,于是就想直接用<代码> nginx> 代码反向代理到本地服务,这样在<代码> nginx> 代码层面做HTTPS就不需要改代码了,只需修改主机将<代码>后端测试环境域名> 代码指向<代码> nginx 代码>服务的IP即可,而且可以适用于其它的HTTP服务开发调试。
首先要生成一套证书用于nginx的ssl配置,直接使用<代码> openssl> 代码工具生成一套<代码>根证书> 代码和对应的<代码>服务证书> 代码。
根证书生成
#生成一个RSA私钥 openssl genrsa两根。关键的2048 #通过私钥生成一个根证书 openssl点播-sha256 - x509天365关键根。关键的两根。crt \ 主题“/C=CN/ST=GD/L=SZ/O=lee/OU=work/CN=fakerRoot”
服务器证书生成
#生成一个RSA私钥 openssl genrsa两级服务器。关键的2048 #生成一个带圣扩展的证书签名请求文件 openssl点播- \ -sha256 \ 关键服务器。关键\ 主题“=CN/ST=GD/L=SZ/O=lee/OU=work/CN=xxx.com/C \” -reqexts圣\ 配置& lt;(猫/etc/pki/tls/openssl.cnf \ & lt; (printf“(三)\ nsubjectAltName=DNS: .xxx.com * DNS: * .test.xxx.com”)) \ 两级server.csr #使用之前生成的根证书做签发 openssl ca——服务器。csr \ md sha256 \ 密钥文件根。关键\ cert根。crt \ 扩展圣\ 配置& lt;(猫/etc/pki/tls/openssl.cnf \ & lt; (printf“(三)\ nsubjectAltName=DNS: xxx.com, DNS: * .test.xxx.com”)) \ 两级server.crt
这样就得到了三个关键文件:
-
<李> <代码> root> 代码:根证书李>
<李> <代码> server.key> 代码:服务证书私钥李>
<李> <代码> server.crt> 代码:服务证书李>
注:生成的服务器证书域名要支持测试环境访问的域名,否则浏览器会提示证书不安全。引用>
为了方便,直接使用<代码>码头工人代码>启动了一个nginx容器进行访问,并将证书和配置文件挂载到对应的目录:
nginx.conf
服务器{ 听443 ssl; server_name _; ssl_certificate“/usr/地方/nginx/ssl/server.pem”; ssl_certificate_key“/usr/地方/nginx/ssl/server.key”; 位置/{ 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美元计划; proxy_set_header主机http_host美元; proxy_set_header X-NginX-Proxy正确; proxy_set_header升级http_upgrade美元; proxy_set_header连接“升级”; proxy_pass http://127.0.0.1:3000; proxy_redirect; proxy_http_version 1.1; } }通过配置<代码> ssl_certificate 代码>和<代码> ssl_certificate_key> 代码来指定服务器的证书和私钥,<代码> proxy_pass> 代码指定开发环境的访问地址。
启动
码头工人运行- d——名称https - p 443:443 - v ~/丰华/ssl:/usr/地方/nginx/ssl - v ~/丰华/config/nginx.conf:/etc/nginx/conf.d/违约。参看nginx将nginx配置和证书相关文件挂载至对应的目录,并暴露443端口,这样服务启动后即可通过https访问到本地开发环境了。
由于服务证书是自己签发的,并不会被浏览器所信任,所以需要将<代码>根证书> 代码安装至操作系统中。
打开铬浏览器→设置→高级→管理证书
通过nginx反向代理来调试代码的实现