geoserver使用nginx代理https后部分请求报错400,且登录时候是向http地址发送请求的问题

问题

如上所示(1)很奇怪,通过nginx代理后可以正常访问geoserver的管理页面,什么都现实正常,但是一点点击某些按钮发送请求时候就报错,比如:服务器状态—>载入被配置就报错400(如下图)。(2)是在登录账号时候会向http发送请求,有时候就容易造成无法登录的情况。

分析

(1)这个是真的一个很离谱情况,首先排查了nginx配置,没有问题;后来觉得是跨域问题没弄好,实际上已经配置过了的(参考官网:开启cors),且没有问题,但是我还是死磕,各种排错,弄了一下午太头大了!

(2)第二问题影响不大,主要看着很烦,有时候会出现明明密码正确但是无法登录的情况。

location /geoserver {
	proxy_set_header Host $host:$server_port;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_redirect off;
	proxy_pass http://xxx.xxx.xxx.xxx:8080/geoserver;
}

解决

(1)主要还是参考了大佬(StackOverflow)和官网(https://docs.geoserver.org/latest/en/user/security/webadmin/csrf.html)的解决方法,核心问题还是geoserver自动给你开了CRSF保护,所以需要给一个白名单或者直接关闭这个保护就好了,主要就是给根目录下的:.\webapps\geoserver\WEB-INF\web.xml中增加一个配置,这个原先文件没有,需要自己加(value中填写自己的域名)。

<context-param>
     <param-name>GEOSERVER_CSRF_WHITELIST</param-name>
     <param-value>domain.com</param-value>
</context-param>

(2)第二个问题可以从两方面解决,一方面是nginx增加一个重定向,将80端口内容重定向到443端口,另一方面在geoserver网页中的全局配置中增加Proxy Base URL,如:“https://example.com/geoserver”,同时勾选“Use headers for Proxy URL”选项(这个过程如果没有提交,就用ip地址登录并提交,修改后记得刷新配置)

其他

对了,geoserver如果基于jdk17,在点击部分按钮时候会报错500(如下图):HTTP ERROR 500 javax.servlet.ServletException: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class java.awt.GraphicsEnvironment$LocalGE。这个主要还是与jdk的部分不兼容,参考官网内容把marlin.jar删除就好了。

感受

太多坑了,想念arcgis server了

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值