1

我如何强制 Jetty 从特定的虚拟主机开始打开所有已部署的 web 应用程序,例如test.localhost:8080/myapp而不是localhost:8181/myapp

这是 jetty.xml 的片段:

<Call name="addConnector">
        <Arg>
            <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
                <Set name="host">
                    <Property name="jetty.host"/>
               </Set>
                <Set name="port">
                    <Property name="jetty.port" default="8181"/>
                </Set>
                ...

...我试图发挥jetty.host价值,但仍然没有成功。:(

如何?

4

1 回答 1

3

要侦听特定网络接口,您可以通过其 IP 地址(IPv4 或 IPv6)或其主机名指定该接口。

由于这是 localhost / loopback 的变体,因此最好使用 IP 地址。

例如:

$ grep localhost /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.0   test.localhost

是的,这些主机有意使用不同的 IP(并且对环回接口有效)。

然后,您可以使用 jetty-distribution 设置连接器,以便test.localhost:8080使用命令行(这是 jetty 9 语法)

$ java -jar /path/to/start.jar jetty.host=127.0.1.0 jetty.port=8080

您还可以将这些命令行选项${jetty.base}/start.ini作为单独的行放入您的行中。

$ grep -E "jetty\.(host|port)" /path/to/my.base/start.ini
jetty.host=127.0.1.0
jetty.port=8080

一旦jetty启动,你可以看到它正在监听的接口

$ netstat -tlnp | grep 8080
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp4       0      0 127.0.1.0:8080          :::*         LISTEN      14480/java  
于 2014-10-14T14:48:01.150 回答