request.getScheme() 在反向代理并且开启https情况下返回http
Closed this issue · 2 comments
tomriddle1234 commented
你好,请原谅我提这么多issue,不知有没有其它更好的联系方式。
我注意到很多文件里有,
<% String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
application.setAttribute("basePath", basePath);
%>
我用Nginx做反代,并且开启https,发现所有的css,js等文件的访问还是变成了http,导致问题。
应该是 request.getScheme()
这个在反代和https情况下出现的,这里 有个修复方式,请问怎么做比较合适?
tomriddle1234 commented
Solved , https://spex.top/archives/nginx-tomcat-http-https.html
Nginx:
location / {
proxy_pass http://dashboard;
proxy_redirect off;
proxy_set_header Host $host;
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
Tomcat
<Engine name="Catalina" defaultHost="localhost">
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https"/>
我刚刚开始接触jsp,请问这个basePath的东西不会导致路由的时候占用太多后端资源吗?
每个request都要获取basePath? 好像这样的写法是IDE生成的?能不能放在一个文件里方便改?