2016-01-22 58 views
1

我學習的基礎知識,當涉及到開發和部署MEAN堆棧的應用程序,所以請它是錯的糾正這種任何部分。我會解釋我目前的設置,以及我想要做的。使用的Nginx服務器隔離節點應用分隔網址

設置

我有,我想用我所有的MEAN堆棧的應用程序的單一AWS EC2實例,還有說我主要是利用來處理SSL請求負載平衡器。 EC2實例正在運行Ubuntu,並在其上安裝了Node和Nginx。

現在我只有一個Node應用程序,它在端口3000上運行.Nginx服務器(我將在下面粘貼的配置文件)監聽4000端口並將請求重定向到3000上的節點應用程序最後,負載均衡器配置爲接受來自端口80和443的請求,並在4000他們直接到Nginx的服務器,因此,基本上是:

HTTP (80) ---- 
              | 
               --> Load Balancer --> Nginx (4000) --> Node App (3000) 
              | 
HTTPS (443) -- 

這裏是我目前使用的全Nginx的配置文件此刻:

user ubuntu; 
worker_processes 1; 
pid /run/nginx.pid; 

events { 
    worker_connections 1024; 
    # multi_accept on; 
} 

http { 
    server_names_hash_bucket_size 64; 

    gzip on; 
    gzip_comp_level 6; 
    gzip_vary on; 
    gzip_min_length 1000; 
    gzip_proxied any; 
    gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 
    gzip_buffers 16 8k; 

    upstream vidzyApp { 
     server localhost:3000; 
    } 

    server { 
     listen 4000; 
     server_name <domain>.com *.<domain>.com; 

     root /home/ubuntu/server; 

     error_page 404 /default.html; 
     error_page 403 /default.html; 

     location/{ 
      proxy_pass http://vidzyApp; 
      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection 'upgrade'; 
      proxy_set_header Host $host; 
      proxy_cache_bypass $http_upgrade; 
     } 
    } 
} 

否我正在運行的應用程序是遵循教程製作的應用程序,名爲Vidzy。如果我現在通過HTTP或HTTPS訪問我的網站,一切都運行良好。但是,這是我想要做的。

問題

基本上,我希望能夠有多個MEAN應用程序的運行是通過在同一個域不同的網址訪問。例如,要訪問Vidzy,我想訪問http://[domain].com/vidzy/

我試圖修改Nginx的配置文件自己以不同的方式,但沒有任何作品的權利。我嘗試的第一件事是將位置服務器的一部分更改爲/vidzy而不是僅僅/。但是這樣做,應用程序似乎非常糟糕。

我還在努力瞭解如何平均應用程序的組件彼此互動。它看起來像試圖改變位置/Vidzy時出現的問題,它攪亂了以這樣的方式,其中位於該應用程序的公共文件夾中的文件無法與新的URL結構中找到該應用程序。

是我在做什麼,即使是可行的呢?如果是這樣,我有多少這是我搞砸了?

+0

我不熟悉MEAN堆棧,但你可以試試'proxy_pass的http:// vidzyApp /;'確保'位置/ vidzy /'映射到節點的根應用程序。確保兩個URI上都有'/'後綴。 –

回答

0

你在正確的軌道上。

對於每個虛擬主機,您需要一個server { ... }塊。 server_name用於決定哪個服務器塊適用於傳入請求中的哪個主機名。

第一個應該設置爲處理意外請求的那個,並且您可能希望將此返回爲一個通用錯誤頁面,其中包含503 Service Unavailable404 Not Found,因爲它是您不希望處理的請求(搜索蜘蛛,機器人或其他人的錯誤配置)。在第一server { ... }塊:

listen 80 default_server;