问题描述
会出现如下http,https混用问题,大致错误如下:
This request has been blocked; the content must be served over HTTPS.
简单理解就是网页是用https协议来访问的,但是有些请求资源却是http协议的。
原因猜测
正常路径直接访问不会有问题,但是优化后,项目采用了nginx反向代理的方式来访问SpringBoot Admin Server项目,就有这问题了,所以直接猜测是反向代理步骤导致了问题。
解决方案
SpringBoot Admin Server有个配置项spring.boot.admin.ui. public-url就是用来解决反向代理的问题的,可以通过这个配置设置请求地址,不然就会从浏览器获取访问地址,不过这时候可以默认就是http了,所以SpringBoot Admin Server项目直接加上spring.boot.admin.ui. public-url配置,把路径定义成https协议的,如下:
spring:
boot:
admin:
ui:
public-url: https://localhost
然后nginx也要加上一个配置,如下:
红框中的配置是用来修改被代理服务器返回的响应头中的Location头域和“refresh”头域,这很关键,可以保证响应头Location的协议和客户端发来的协议是一致,都会是https。
重启服务和nginx后即可正常访问了。