2013-12-22 9 views
7

Ich habe versucht, Nginx als Proxy für Jetty einzurichten. Ich möchte etwas tun, wie in this answer erklärt, aber für Jetty nicht klingeln.Wie konfiguriere ich Nginx als Proxy für Jetty?

Ich habe eine .war erstellt und ich legte es in ~/jetty/jetty-dist/webapps/web_test-0.1.0-SNAPSHOT-standalone.war

Sprich ich die Domain example.com mit IP-Adresse 198.51.100.0 verwenden möchten.

Ich habe auch kopiert /etc/nginx/sites-available/default in die Datei example.com und ich habe es im selben Verzeichnis.

Können Sie mir helfen, Nginx als Proxy für Anlegesteg in meinem Fall zu konfigurieren? Ich weiß, dass es viele Online-Referenzen gibt, wie man das macht, aber sie sind alle verschieden und ich bin verwirrt.

Welche spezifischen Änderungen muss ich in nginx vornehmen? Welche Änderungen muss ich in jetty.xml vornehmen? Muss ich noch weitere Änderungen vornehmen? Wird meine App unter example.com/index.html ausgeliefert?

Aktueller Stand der nginx ist unten kopiert:

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

ich mich gefragt, ob ich Jetty überhaupt verwenden müssen. In this setup verwendet er einfach Ring, was super einfach scheint? Was kann ich an der Anlegestelle gewinnen?


Antwort

9

So konfigurieren Sie Nginx für die Arbeit mit einem Java-Server. Im Beispiel wird Jetty verwendet.

bearbeiten /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; 
    } 
} 

Betrachten Sie den externen Zugriff auf Port deaktivieren 8080:

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

Ein Beispiel Jetty-Konfiguration (jetty.xml) könnte folgendermaßen aussehen:

<?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> 

Dies führt dazu, Jetty zu hören auf localhost: 8080 und nginx um Anfragen von domain.com:80 auf den Jetty-Server umzuleiten.

+0

in Jetty 6, wenn Sie $ hatte {jetty.home} /contexts/myapp.xml Mit Jetty 9.0, es zu $ bewegen {jetty.home} /webapps/myapp.xml Mit Jetty 9.1 +, verschiebe es auf $ {jetty.base} /webapps/myapp.xml –

Verwandte Themen