配置注意事项

使用生产日志

日志记录可能明显影响服务器的性能。高日志记录级别通常是跟踪问题所必需的,但默认情况下,您应该使用低级别运行。(可以在地理服务器运行时切换日志记录级别。)

您可以在 日志配置文件 。您将想要选择 PRODUCTION 日志配置,其中只将问题写入日志文件。

制定服务策略

服务策略是向客户机提供输出的方法。这是正确形式(绝对确保使用正确的OGC代码等报告错误)和速度(尽可能快地提供输出)之间的平衡。这是基于GeoServer提供的功能做出的决定。您可以通过修改 web.xml 地理服务器实例的文件。

可能的策略是:

Strategy

Description

SPEED

立即提供输出。这是最快的策略,但通常忽略了正确的OGC错误。

BUFFER

将整个结果存储在内存中,然后在输出完成后为其提供服务。这可以确保正确的OGC错误报告,但会将响应延迟相当长的时间,并且在响应较大时会耗尽内存。

FILE

类似 BUFFER 但将整个结果存储在一个文件中而不是内存中。比…慢 BUFFER 但要确保不会出现内存问题。

PARTIAL-BUFFER

两者之间的平衡 BUFFERSPEED ,此策略尝试在内存中缓冲几KB的响应,然后提供完整的输出。

个性化服务器

这不是性能考虑,但同样重要。为了使geoserver尽可能有用,您应该根据组织自定义服务器的元数据。跳过一些配置步骤,并保留与示例相同的关键字和摘要,这可能会很诱人,但这只会混淆潜在用户。

建议:

  • 填写WFS、WMS和WCS 服务元数据 各节(这些信息将作为能力文件的一部分进行广播)

  • 为数据提供自己的命名空间(并提供正确的URI)

  • 删除默认层(例如 topp:states

配置服务限制

确保客户端不能从服务器请求过多的资源。

特别地:

设置数据修改的安全性

Geoserver默认支持WFS-T(事务),允许用户修改您的数据。

如果不想修改数据库,可以在 WFS设置 。设置 Service LevelBasic 。为了提高安全性,我们建议任何数据库访问都使用提供只读权限的数据存储凭据。这将消除SQL注入的可能性(尽管Geoserver通常不容易受到这种攻击)。

如果希望某些用户能够修改数据,请设置服务级别 Service LevelTransactional (或 Complete )和使用 服务安全 要限制对 WFS.Transaction 手术。

如果希望某些用户能够修改您的部分数据,但不能修改全部数据,请将 Service LevelTransactional (或 Complete ),并使用 层安全性 以限制对特定层的写入访问。数据安全性可用于允许基于工作区、数据存储区或层安全性的写访问。

缓存您的数据

WMS磁贴的服务器端缓存是提高性能的最佳方式。在缓存中,预渲染的瓷砖将被保存,从而消除了对冗余WMS调用的需要。有几种方法可以为Geoserver设置WMS缓存。GeoWebCache是最简单的方法,因为它与Geoserver捆绑在一起。(请参阅 GeoWebCache 了解更多详细信息。)另一种选择是 TileCache

您还可以使用更通用的非空间缓存系统,例如 OSCache (嵌入式缓存服务)或 Squid (Web缓存代理)。

对于WFS层,缓存也是可能的,但方式非常有限。对于无法快速确定功能计数的数据存储(例如shapefile),启用缓存可以防止在单个请求期间查询存储两次。要启用缓存,请设置Java系统属性 org.geoserver.wfs.getfeature.cachelimit 设置为正整数。任何小于缓存限制的数据集都将在请求期间被缓存,这将防止第二次查询数据集的特征计数。请注意,这可能会对某些类型的数据存储产生不利影响,因为它绕过了可能存在的任何功能计数优化。

欢迎页面选择器

工作空间和层选择器需要很长时间才能填满大型目录。正因为如此,Geoserver尝试限制填充它们所需的时间(默认为5秒),以及其中的项目量(默认情况下, 1000 ),如果达到时间限制,将退回到简单的文本字段。

在某些情况下,这是不够的,页面可能无论如何都会卡住。以下属性可用于调整行为:

  • GeoServerHomePage.selectionMode :可以设置为 text 要始终使用简单的文本字段, dropdown 始终使用下拉菜单,或者 auto 若要使用默认自动行为,请执行以下操作。

  • GeoServerHomePage.selectionTimeout :以毫秒为单位的时间限制,默认为 5000

  • GeoServerHomePage.selectionMaxItems :下拉列表中显示的最大项目数,默认为 1000

使用时 text 选择模式页面描述是静态的,不再提供可用的工作空间和层。

../_images/selector_text.png

欢迎页面文本选择模式

禁用geoserver web管理界面

在某些情况下,您可能希望完全禁用Web管理界面。有两种方法可以做到这一点:

  • 设置Java系统属性 GEOSERVER_CONSOLE_DISABLED 通过添加以下内容设置为真 -DGEOSERVER_CONSOLE_DISABLED=true 添加到容器的JVM选项

  • 删除所有 gs-web*-.jar 文件来自 WEB-INF/lib

禁用web管理界面登录时自动完成

要禁用Web管理员登录表单时自动完成,请执行以下操作:

  • 设置Java系统属性 geoserver.login.autocomplete 通过添加到关闭 -Dgeoserver.login.autocomplete=off 添加到容器的JVM选项

  • 如果浏览器已经缓存了凭据,请考虑在设置JVM选项后清除缓存或表单数据。

禁用对层预览页面的匿名访问

在某些情况下,您可能希望仅向经过身份验证的用户提供对层预览页面的访问权限。该解决方案基于添加新的 filter chain 具有将图层预览页面的路径与Geoserver的路径相匹配的规则 身份验证链 。以下是复制的步骤:

  • 在……下面 Security -> Authentication -> Filter Chains ,添加新的HTML链

  • 将新链的名称设置为 webLayerPreview (或同样)

  • 作为蚂蚁模式,输入层预览页面的路径,即 /web/wicket/bookmarkable/org.geoserver.web.demo.MapPreviewPage (因为它是Ant模式,所以路径也可以用通配符写得更短: /web/**/org.geoserver.web.demo.MapPreviewPage )

  • 勾选选项 Allow creation of an HTTP session for storing the authentication token

  • 在……下面 Chain filters ,添加过滤器 remembermeform (按该顺序)致 Selected 右边的列表

  • 通过单击对话框中的 Close 按钮;新的HTML链已作为最后一个条目添加到链列表中

  • 由于所有链都是从上到下依次处理的,为了产生任何效果,新的 webLayerPreview 必须放置链条 before 这个 web 链(匹配路径 /web/**,/gwc/rest/web/**,/ )

  • 使用 Position 列表左侧的箭头可相应地向上移动新添加的链

  • 通过单击保存您所做的更改 Save 位于页面底部的按钮

有了这一点,未经身份验证的用户现在只会在他们单击层预览菜单项链接时被转发到登录页面。

上述步骤也可以应用于需要删除匿名访问的Web管理界面的其他页面。例如:

  • Demos -> Demo requests (路径: /web/wicket/bookmarkable/org.geoserver.web.demo.DemoRequestsPage )

  • Demos -> WCS request builder (路径: /web/wicket/bookmarkable/org.geoserver.wcs.web.demo.WCSRequestBuilder )

警告

尽管禁用匿名访问层预览页面 MAY 防止一些未经身份验证的用户通过一些简单的点击访问数据,这是 NOT 一种安全功能。具体地说,由于其他更复杂的用户具有构建OGC请求的能力, MAY 仍然通过Geoserver的服务访问关键数据,这是 NOT 取代基于数据级别或服务级别安全的精心设计的安全概念。

X-Frame-Options 策略

为了防止点击劫持攻击,geoserver默认将x-frame-options HTTP头设置为sameorigin。这样可以防止geoserver嵌入到iframe中,从而防止某些类型的安全漏洞。查看 OWASP Clickjacking entry 有关详细信息。

如果要更改此行为,可以通过以下属性进行更改:

  • geoserver.xframe.shouldSetPolicy :控制是否应设置X-Frame-Options过滤器。默认值为True。

  • geoserver.xframe.policy: controls what the set the X-Frame-Options header to. Default is SAMEORIGIN valid options are DENY, SAMEORIGIN and ALLOW-FROM [uri]

这些属性可以通过Java系统属性、命令行参数(-d)、环境变量或Web.xml init参数来设置。

OWS服务异常XML mimetype

默认情况下,OWS服务异常XML响应的内容类型设置为 application/xml

以防您希望将其设置为 text/xml 相反,您需要设置Java系统属性:

  • -Dows10.exception.xml.responsetype=text/xml 对于OWS 1.0.0版本

  • -Dows11.exception.xml.responsetype=text/xml 对于OWS 1.1.0版本

外部实体解析

在处理来自服务请求(带有FILTER和SLD_BODY参数的POST请求和GET请求)的XML文档时,使用XML实体解析来获取任何引用的文档。当XML请求提供用于验证的XSD模式位置时,这是最常见的)。

Geoserver提供了许多工具来控制外部实体解析:

  • 默认情况下 httphttps 实体解析不受限制,可以访问本地 file 禁止引用。

  • 限制 httphttps 实体解析::

    -DENTITY_RESOLUTION_ALLOWLIST
    

    内置的允许列表包括W3C、OGC和INSPIRE架构位置:

    www.w3.org|schemas.opengis.net|www.opengis.net|inspire.ec.europa.eu/schemas
    

    此外,还包括代理基础URL(如果可从全局设置中获得)。

    访问本地 file 参考文献仍然受到限制。

  • 要允许其他外部实体 httphttps 位置使用逗号或条分隔的列表::

    -DENTITY_RESOLUTION_ALLOWLIST=server1|server2|server3/schemas
    
  • 关闭所有限制(允许 httphttps ,以及 file 参考)使用全局设置 不受限制的XML外部实体解析

    此设置防止 ENTITY_RESOLUTION_ALLOWLIST 不会被利用。