我能够在一个新的服务器实例上使用如下所示的URL到达GeoServer登录表单:https://sub.domain.tld/geoserver。但是,输入正确的用户名和密码会导致/geoserver/j_spring_security_check无法在浏览器窗口中以纯文本形式显示,而"检查“不能显示在地址行(Chrome和Firefox)上。登录在http://sub.domain.tld:8080/geoserver上运行得很好,当登录时,SSL将完全跳过登录表单并打开完整的GUI --但是没有一个示例层预览会起作用(无法获取/geoserver/tiger/wms ...or (任何层))。
我有3台类似的服务器安装在早期的软件版本中,它们都能完美地工作:
CentOS Linux release 7.5.1804 (Core)
Apache 2.4.6
Tomcat 9.0.4.0
JVM 1.8.0_171-b10 (Oracle)
GeoServer 2.15.1 (also 2.14.1)最新的服务器是:
CentOS Linux release 7.9.2009 (Core)
Apache 2.4.6
Tomcat 9.0.48.0
JVM 1.8.0_292-b10 (Red Hat)
GeoServer 2.19.1我密切关注GeoServer安装过程,发现了这里。Apache已经安装,并使用certbot和“让我们加密”证书使用虚拟主机配置。我将以下内容添加到/etc/httpd/sites-available/sub.domain.tld.conf文件的部分:
ProxyRequests Off
ProxyPass /geoserver http://localhost:8080/geoserver
ProxyPassReverse /geoserver http://localhost:8080/geoserver
<Location "/geoserver">
Order allow,deny
Allow from all
Header set Access-Control-Allow-Origin "*"
</Location>我还将"https://sub.domain.tld/geoserver/“设置为GeoServer中的代理基本URL。这正是我的工作实例的设置方式。
最新的/opt/ Tomcat /webapp/geoserver/web.xml/web.xml文件略有不同,因为它有单独的CORS部分,对于Jetty和Tomcat没有注释。Tomcat部分和交叉原点滤波器映射没有注释。与以前不同的是,我必须启用SELinux httpd_can_network_connect进程才能通过SSL进入GeoServer登录表单。但是,禁用SELinux强制执行并不能解决j_spring_security_check问题。
敏感的WMS和WFS内容必须通过SSL提供。我现在正在旋转我的研究车轮,所以任何帮助解决这将是非常感谢的!
发布于 2022-06-01 13:34:36
我遇到了一个类似的问题,试图使用Apache反向代理Geoserver码头容器。
在猛击我的头几天之后,我发现我需要在设置的两端做一些改变。
阿帕奇:
<Location "/geoserver">
ProxyPreserveHost On
ProxyPass http://localhost:8080/geoserver
ProxyPassReverse http://localhost:8080/geoserver
</Location>ProxyPreserveHost指令应该确保使用的是sub.domain.tld,而不是localhost。
然而,在这一点上,我遇到了另一个问题,无论我做了什么&注销URL使用的是http://和而不是 https://。
这需要调整Tomcat的服务器配置,特别是连接器使用的方案。
猫猫:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
scheme="https"
/>注意,scheme的值是https,通常是http,因为它是http连接器。此连接器不对通信进行SSL/TLS加密,因此它将在正常情况下(适当地)将协议设置为http。
由于我们使用的是SSL/TLS加密的代理,所以我们不需要Tomcat来完成这项工作,但是我们仍然需要告诉Tomcat使用https而不是通常的http来描述服务器名。
或者,您也可以考虑使用AJP连接器,它是一种完全不同的协议,但可以非常巧妙地解决其中的一些问题,而且性能更好。
这种方法的问题在于它需要更多的Apache才能工作,同时考虑到AJP相对于http连接器的强大程度,还需要一些安全方面的考虑。
此外,在Tomcat中还可以使用其他一些代理设置来消除Apache中对ProxyPreserveHost的需求,但这应该可以帮助您实现目标。
附加阅读:
Tomcat连接器文档:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
Tomcat AJP文档:https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html
https://stackoverflow.com/questions/68136426
复制相似问题