2015-10-18 59 views
0

我可以爲我的靜態網站內容提供服務並在同一個EC2實例上運行節點服務器。 我的ec2實例是一個t2.micro ubuntu 14.04映像。 完成的任務: 已安裝Nodejs,npm。配置Nginx的配置。設置../../www/目錄通過nginx提供內容。靜態網站和節點服務器在同一個EC2實例上

我有一個域xyz.com將其@值指向與實例關聯的彈性IP。

上傳網站文件到目錄。所以現在如果我訪問xyz.com,我通過nginx獲取我的網站內容。 很酷。

但節點應用程序不可訪問。 我節點應用程序在端口3000

上運行嘗試添加

server { 

root /var/www; 
index: example.js 

server_name _; 

location/{ 
    proxy_pass http://127.0.0.1:3000; 
    expires 30d; # not required 
    access_log off; 
} 

}

的/ etc/nginx的/網站,提供給指向節點服務器。

很酷。現在xyz.com運行我的節點應用程序。但是,沒有網站內容,現在訪問: ( 如果我嘗試打它的路線在我的快遞路線的定義有在服務器端沒有記錄任何API只是一個nginx的404錯誤 如:

XYZ .COM/myroute -404 nginx的錯誤,工作在localhost:3000/myroute
xyz.com/ - 返回/

xyz.com:3000默認路由集合 - 不列入打擊節點服務器沒有日誌

很多關於線路資源建議重新路由安全區域中的端口80以通過運行節點的端口提供內容。我可以用這種方式運行節點應用程序,但整個網站都必須通過節點進行服務。

我想單獨運行它們。

xyz.com - 提供我的網站

xyz.com:3000 - 讓我打我的節點服務器我應該到兩個不同的實例分開的應用和網站?他們如何被路由?

+0

您只能在端口80上打開一個Web服務器,但您可以讓一個Web服務器服務於2個後端。請參閱http://stackoverflow.com/questions/13240840/nginx-reverse-proxy-multiple-backends –

+0

因此,如果我向實例添加另一個彈性IP並將其服務器位置設置爲通過nginx代理,只爲nodejs應用提供服務,那會有用嗎? –

+1

你不需要另一個IP,你只需要向nginx澄清你想要的。如果兩個站點的域名相同,你的'位置/'塊對節點的路由太多,「隱藏」主站點的內容。這兩個站點的路徑必須是明確無誤的,例如,節點應用程序中的所有內容可能位於'location/api {...}'之下。 –

回答

0

嗨我正在運行一個類似的設置,但與Jetty服務器,而不是節點。

下面是我的配置;

server { 
    listen 80; 

    root /var/www/html/; 
    index index.php index.html index.htm; 

    server_name my_domain; 

    location/{ 
      try_files $uri $uri/ /index.php?$query_string; 
    } 

    location ~ \.php$ { 
      try_files $uri /index.php =404; 
      fastcgi_split_path_info ^(.+\.php)(/.+)$; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name        ; 
      include fastcgi_params; 
    } 

    location /app { 
      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; 
    } 
} 

據我瞭解,你應該只需要位置/應用更改爲任何你的應用程序路徑,顯然在正確的端口點proxy_pass。

另一種解決方法是在子域上進行代理傳遞,並在nginx中有兩個虛擬服務器,例如app.mydomain.com和app2.mydomain.com。對於這種設置有一個看看; nginx reverse proxy multiple backends

我相信你正在尋找我上面的那種設置。祝你好運。

相關問題