我使用的是 tomcat 8.x,我的网络同时支持 ipv4 和 ipv6 地址。但是,我希望 tomcat 只收听 ipv6 地址(而不是 ipv4)。
我试图在谷歌上找到解决方案,并找到了 tomcat 的手册 - http://library.bec.ac.in/docs/config/http.html .在此页面上,地址属性描述为 ------>
对于具有多个 IP 地址的服务器,此属性指定将使用哪个地址来监听指定端口。默认情况下,连接器将监听所有本地地址。除非使用系统属性以其他方式配置 JVM,否则当配置为 0.0.0.0 或::时,基于 Java 的连接器(NIO、NIO2)将同时监听 IPv4 和 IPv6 地址。如果配置为 0.0.0.0,则 APR/ native 连接器将仅监听 IPv4 地址,如果配置为::,则将监听 IPv6 地址(以及可选的 IPv4 地址,具体取决于 ipv6onlyv6 的设置)。
根据上面的描述,通过使用 ipv6onlyv6,我可以让 tomcat 只监听 ipv6 地址,但是描述没有给出关于如何在 server.xml 中使用该属性的正确示例。
我在 server.xml 中尝试了以下属性 ipv6onlyv6 的组合,但它们都不起作用 ----
组合[1] --
address="::"
ipv6onlyv6="true"
[2]组合---
address="ipv6onlyv6"
请帮忙。提前致谢。如果有人知道在 tomcat 6.x 中执行此操作的方法,那也很好,因为我们很少有应用程序使用 tomcat 6.x
...拉胡尔
最佳答案
要仅使用 ipv6v6,我必须执行以下步骤 --
[1] ipv6v6只使用apr库,所以在tomcat中包含apr库
[2] tomcat的server.xml中有一个listener标签,会加载apr库,里面包含useAprConnector="true"
<!--APR library loader. Documentation at /docs/apr.html -->
[3] 在所需的连接器节中使用以下配置
address="::" ipv6v6only="true"
完整的连接器标记示例 --
<Connector port="8080"
connectionTimeout="20000"
compression="on"
compressionMinSize="10240"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/x-javascript,application/javascript,application/json,application/xml,application/xhtml+xml,application/xslt+xml"
URIEncoding="UTF-8" address="::" ipv6v6only="true" protocol=“org.apache.coyote.http11.Http11AprProtocol” />
请注意属性的正确名称是 - ipv6v6only,而不是 ipv6onlyv6(这两个在 tomcat 手册中被错误地提及)
关于tomcat - 如何在 tomcat 的 server.xml 中使用 ipv6onlyv6 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44365433/