getRequest().getRequestURL()获取不了https

参考社区的一些配置,在自己服务器上用nginx+undertow配置了多个网站,并在nginx中配置了ssl,

但controller中 getRequest().getRequestURL() 获取的是http://xxx.com,而不是https://xxx.com

请教下这个是nginx还是undertow中哪里还需要设置? 后端才能获取https而不是http。


附:

nginx配置如下:

server {

listen 443 ssl;

server_name xxx.com;

ssl_certificate      xxx.com.crt;

ssl_certificate_key  xxx.com.key;

ssl_session_timeout 30m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

location / {

proxy_pass   http://xxx.com:8108;

proxy_set_header   X-Real-IP $remote_addr;

}

}

# 实现http自动跳转到https

server {

listen 80;

server_name xxx.com;

rewrite ^(.*)$  https://$host$1 permanent;

}


评论区

糊搞

2020-07-03 11:27

https就是在http上加了安全层,通过https调用到你的应用时,容器会将安全层解开,从而将解安全包后的http交给你的应用处理。

糊搞

2020-07-03 11:29

https://www.cnblogs.com/yinliang/p/10721515.html

JFinal

2020-07-03 14:09

由于你的项目本身是跑在 http 上的,所以 nginx 与你的项目通信只能使用 http,所以 request.getScheme() 还是无法获取到 https

解决办法以前说得很详细,参考:
https://jfinal.com/feedback/1925

liugz

2020-07-03 21:33

@糊搞 @JFinal 大致的逻辑还是明白,网上也看到了相关配置,之前是运行在tomcat上,设置tomcat就可以解决。现在换成undertow,参考文档修改了undertow的几个配置也是无效。
因为小程序必须https,所以目前是在拦截器中直接获取网址替换成https解决。

JFinal

2020-07-03 21:51

@liugz 在 undertow + nginx 的场景下严格测试过的,一定是可以的

热门反馈

扫码入社