Как настроить Nginx в качестве прокси-сервера для jetty?

Я пытался настроить nginx в качестве прокси для причала. Я хочу сделать что-то, как описано в ответ но для пристани не кольцо.

Я создал .war и я поместил его в ~/jetty/jetty-dist/webapps/web_test-0.1.0-SNAPSHOT-standalone.war

скажем, я хочу использовать домен example.com с ip-адресом 198.51.100.0.

Я также скопировал /etc/nginx/sites-available/default в файле example.com и у меня есть это в том же каталоге.

можете ли вы помочь мне настроить nginx в качестве прокси для причала в моем случае? Я знаю, что есть много ссылок в интернете о том, как это сделать, но они все разные и я запуталась.

какие конкретные изменения мне нужно внести в nginx? Какие изменения мне нужно внести в jetty.в XML? Нужно ли еще что-то менять? Будет ли мое приложение обслуживаться на example.com/index.html?

текущее состояние nginx копируется ниже:

upstream jetty {
  server 127.0.0.1:8080 fail_timeout=0
}

server {
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;

        server_name localhost;

        location / {
                proxy_pass http://jetty

                try_files $uri $uri/ =404;
        }

редактировать

мне было интересно, нужно ли мне вообще использовать причал. В настройка он просто использует кольцо, которое, кажется, очень легко? Что я получаю, используя jetty?


1 ответов


как настроить nginx для работы с сервером java. В примере используется причал.

редактировать /etc/nginx/sites-available/hostname:

server {
  listen       80;
  server_name  hostname.com;

  location / {
    proxy_pass       http://localhost:8080;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
  }
}

рассмотрите возможность отключения внешнего доступа к порту 8080:

/sbin/iptables -A INPUT -p tcp -i eth0 --dport 8080 -j REJECT --reject-with tcp-reset

пример конфигурации причала (jetty.xml) может выглядеть так:

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

<!--
 | http://eclipse.org/jetty/documentation/current/configuring-connectors.html
 +-->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
  <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
    <Set name="secureScheme">https</Set>
    <Set name="securePort"><Property name="jetty.tls.port" default="8443" /></Set>
    <Set name="outputBufferSize">65536</Set>
    <Set name="requestHeaderSize">8192</Set>
    <Set name="responseHeaderSize">8192</Set>
  </New>
  <Call name="addConnector">
    <Arg>
      <New class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server"><Ref refid="Server" /></Arg>
        <Arg name="acceptors" type="int"><Property name="http.acceptors" default="-1"/></Arg>
        <Arg name="selectors" type="int"><Property name="http.selectors" default="-1"/></Arg>
        <Arg name="factories">
          <Array type="org.eclipse.jetty.server.ConnectionFactory">
            <Item>
              <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                <Arg name="config"><Ref refid="httpConfig" /></Arg>
              </New>
            </Item>
          </Array>
        </Arg>
        <Set name="host"><Property name="jetty.host" default="localhost" /></Set>
        <Set name="port"><Property name="jetty.port" default="8080" /></Set>
      </New>
    </Arg>
  </Call>
</Configure>

Это заставит Jetty слушать localhost: 8080 и nginx для перенаправления запросов от домен.com: 80 к серверу причала.