2013-12-22 6 views
7

Я пытался настроить nginx как прокси-сервер для причала. Я хочу сделать что-то, как описано в this answer, но для 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; 
     } 

EDIT

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

ответ

9

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

Edit /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 (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 для перенаправления запросов от domain.com:80 к серверу Jetty.

+0

в Jetty 6, если вы имели $ {} jetty.home /contexts/myapp.xml С Jetty 9.0, переместите его в $ {} jetty.home /webapps/myapp.xml С Jetty 9.1 +, переместите его на $ {jetty.base} /webapps/myapp.xml –

Смежные вопросы