0

我目前的设置非常简单。

我有一个运行 Ubuntu 的静态 IP 网络服务器。我有一个正确指向该静态 IP 的域。在我的服务器上,我有一个使用标准/默认配置运行的 Jetty 实例 - 更具体地说 - etc/jetty-logging.xml 和 etc/jetty.xml 配置。Jetty 当前侦听默认端口 8080。

在我的 webapps 文件夹中,我有两个提取的 Web 应用程序,所以没有战争文件。

我的 Web 应用程序当前可按如下方式访问:

http://1.2.3.4:8080/web_app_1 and 
http://1.2.3.4:8080/web_app_2

http://www.example.com:8080/web_app_1 and
http://www.example.com:8080/web_app_2

我想实现的目标非常简单,但我对此的经验非常有限。

我想在http://www.example.comhttp://admin.example.com提供一个 Web 应用程序。所以更具体地说:

http://www.example.com -> http://1.2.3.4:8080/web_app_1
http://admin.example.com -> http://1.2.3.4:8080/web_app_2

实现这一目标的最简单和最好的方法是什么?

我宁愿不为端口 80 配置码头或让它以 root 身份运行。

这就是我到目前为止所知道的“认为”...

我想我需要在网络服务器内部以某种方式将流量从端口 80 转发到端口 8080 - 我不知道如何以最简单的方式做到这一点 - 我没有太多关于 apache 或 nginex 的配置知识,所以在我走之前提前并使用其中一个我想知道我正在遵循正确的路线。我也知道可以使用 iptables,但这条路线对我来说似乎有点太隐蔽和模糊了。

我想我需要使用 Jetty 的虚拟主机配置,它看起来像这样(取自https://wiki.eclipse.org/Jetty/Howto/Configure_Virtual_Hosts):

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="war"><SystemProperty name="jetty.home"/>/webapps/xxx.war</Set>
  <Set name="contextPath">/</Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>333.444.555.666</Item>
      <Item>127.0.0.1</Item>
      <Item>www.blah.com</Item>
      <Item>www.blah.net</Item>
      <Item>www.blah.org</Item>
    </Array>
  </Set>
</Configure>
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="war"><SystemProperty name="jetty.home"/>/webapps/zzz.war</Set>
  <Set name="contextPath">/</Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>777.888.888.111</Item>
      <Item>www.other.com</Item>
      <Item>www.other.net</Item>
      <Item>www.other.org</Item>
    </Array>
  </Set>
</Configure>

与上面的示例不同,我没有部署的 war 文件,我无法找到如何使用此配置来配置我的 web 应用程序目录。

任何帮助甚至是朝着正确方向的推动都将不胜感激!

谢谢!

尚德尔

4

3 回答 3

1

所以我去了iptables路线......

配置最终变得非常简单。根据 Jetty 文档(http://www.eclipse.org/jetty/documentation/current/setting-port80-access.html),我使用以下命令配置了 iptables:

/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

然后我为 Jetty 创建了一个新的 xml 配置文件,如下所示:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection">
  <Call name="addHandler">
    <Arg>
      <New class="org.eclipse.jetty.webapp.WebAppContext">
        <Set name="contextPath">/</Set>
        <Set name="extractWAR">false</Set>
        <Set name="copyWebDir">false</Set>
        <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/web_app_2/</Set>
        <Set name="virtualHosts">
           <Array type="java.lang.String">
             <Item>admin.example.com</Item>
           </Array>
        </Set>
      </New>
    </Arg>
  </Call>

  <Call name="addHandler">
    <Arg>
      <New class="org.eclipse.jetty.webapp.WebAppContext">
    <Set name="contextPath">/</Set>
    <Set name="extractWAR">false</Set>
    <Set name="copyWebDir">false</Set>
        <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/webapps/web_app_1/</Set>
        <Set name="virtualHosts">
           <Array type="java.lang.String">
             <Item>www.example.com</Item>
             <Item>example.com</Item>
           </Array>
        </Set>
      </New>
    </Arg>
  </Call>
</Configure>

我希望这有帮助!

尚德尔

于 2014-10-23T10:51:39.133 回答
0

线..

<Set name="war"><SystemProperty name="jetty.home"/>/webapps/zzz.war</Set>

只是对 Web 应用程序的引用(不是专门的 war 文件)

只需使该行引用目录即可。

<Set name="war"><SystemProperty name="jetty.webapps"/>/web_app_2/</Set>
于 2014-10-17T19:20:31.263 回答
0

使用码头,如果您将应用程序放入webapps/ROOT/thenhttp://example.com 将指向它。

于 2018-03-04T06:42:16.623 回答