0

我想从 Payara Micro 的输出中删除服务器标头。

例如,它报告这个:

HTTP/1.1 200 OK
Server: Payara Micro #badassfish

我想摆脱那条Server线。

我看到问题 32在理论上提供了禁用此功能的功能。相关的拉取请求当然似乎表明正在咨询某种属性来禁用它。我可以由此推断,如果这是一个成熟的服务器,我大概可以进入管理 GUI,然后单击某处的复选框。

但我正在运行 Payara Micro,它需要在启动时从命令行进行完全配置。

我缺少的是一个简单的“把它放在命令行”类型的指令,我似乎无法在任何地方找到它。例如,glassfish-web.xml我可以使用-as-modified-by-P​​ayara 中的设置吗?还是命令行开关?asadmin或者我可以在预启动脚本中设置的特定属性?想法?

4

1 回答 1

2

您引用的更改链接到一个拉取请求server-header,该请求向 http-listener添加了一个布尔属性,这将禁用标头。

没有本机 asadmin 命令来设置此属性,因此您需要为set要修改的侦听器使用带有正确虚线名称的 asadmin 命令。要找出这是什么,您可以使用get带有通配符和 grep 的命令来获取您想要的值,如下所示的 Payara Server:

➜  ~ /opt/payara/server/171.1/bin/asadmin get "*" | grep server-header  
configs.config.default-config.network-config.protocols.protocol.http-listener-2.http.server-header=true
configs.config.default-config.network-config.protocols.protocol.http-listener-1.http.server-header=true
configs.config.default-config.network-config.protocols.protocol.admin-listener.http.server-header=true
configs.config.server-config.network-config.protocols.protocol.admin-listener.http.server-header=true
configs.config.default-config.network-config.protocols.protocol.sec-admin-listener.http.server-header=true
configs.config.server-config.network-config.protocols.protocol.http-listener-1.http.server-header=true
configs.config.server-config.network-config.protocols.protocol.http-listener-2.http.server-header=true

由于 default-config 只是一个模板并且没有被使用,我们希望监听器来自server-config. http-listener-1默认情况下用于 HTTP,默认情况下http-listener-2用于 HTTPS。要修改server-headerPayara Micro 中的属性,您需要使用以下命令创建一个文件(请注意,Payara Micro 默认只有一个侦听器,名为http-listener):

set configs.config.server-config.network-config.protocols.protocol.http-listener.http.server-header=false

然后,您可以使用 prebootcommandfile 应用这些,如下所示:

java -jar /opt/payara/micro/173/payara-micro.jar --prebootcommandfile myCommands.txt

您可能还希望xpowered-by通过相同的方法禁用该属性。

于 2017-09-08T20:54:44.557 回答