2013-12-22 32 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; 
     } 

編輯

我在想,如果我需要在所有使用碼頭。在this setup他只是使用戒指,這似乎超級簡單?我通過使用jetty獲得什麼?


回答

9

如何配置nginx以使用java服務器。在使用Jetty的例子中。

編輯/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> 

這將導致防波堤聽localhost:8080和nginx將請求從domain.com:80重定向到Jetty服務器。

+0

在碼頭6,如果你有 $ {} jetty.home /contexts/myapp.xml 隨着碼頭9.0,將其移動到 $ {} jetty.home /webapps/myapp.xml 隨着碼頭9.1 +,將其移動到 $ {jetty.base} /webapps/myapp.xml –