Im在爲我的應用程序在Amazon上部署服務器的過程中。因此,我決定使用EC2 ubunutu 14.04 64位t2.micro實例(免費)。我想在測試應用程序後再擴展硬件。我的目標是建立一個服務器系統,準備在我想要的時候進行擴展。因此,系統設計如下所示:亞馬遜AWS VPC實例通信
VPC (default)
___________________________________________
| |
WWW <-----|----> NGINX <----> EXPRESS <------> NEO4J |
|___________________________________________|
後來我想能夠將其放大到某事像這樣:
VPC (default)
_________________________________________________
| |
| –– EXPRESS -- -- NEO4J |
| | | | |
WWW <-----|----> NGINX -- -- EXPRESS -- -- ELB -- -- NEO4J |
| | | |
| -- EXPRESS -- |
|_________________________________________________|
但是現在,我已經第一系統設計安裝。我創建了3個Ubuntu實例。第一個設置爲nginx用於反向代理,gzip壓縮和負載平衡。 nginx實例可以通過http端口80訪問。 表示實例包含我的節點/ javascript代碼,其中服務器正在運行端口3000。最後一個實例使用NEO4J作爲我的NOSQL數據庫。現在的問題是,我不能讓實例在默認的VPC中相互通信。或者更確切地說,我首先要讓nginx服務器(端口80)與我的快速服務器(端口3000)進行通信,這些服務器位於不同的t2.micro實例上。
我在站點可用目錄中創建了一個名爲「express」的nginx配置文件,並在啓用站點的目錄中創建了一個符號鏈接,引用了「express」配置文件。
的nginx的快遞配置文件如下所示:
upstream nodes{
server PRIVATE_IP:3000;
keepalive 8;
}
server{
listen *:80;
location/{
proxy_pass http://nodes;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Connection "";
proxy_http_version 1.1;
}
}
我試圖用我用PRIVATE_IP Express實例進行通信。
安全組可以請求nginx的默認html (歡迎來到Nginx ...)通過 http://PUBLIC_DNS_OF_NGINX
。 但是,當我要求某個反向代理來表示http://PUBLIC_DNS_OF_NGINX/test
我的快遞服務器不會回覆一個響應(nginx沒有達到)。
但我可以直接到達快速實例並通過 http://PUBLIC_DNS_OF_EXPRESS:3000/test獲取響應。
編輯:我沒有進入nginx服務器ssh和捲曲http://PRIVATE_DNS_OF_EXPRESS:3000/test和http://PRIVATE_IP_OF_EXPRESS:3000/test和兩個工作。所以我覺得在nginx服務器端有一個錯誤。這可能是我想要的配置,但仍需要你的幫助......
如果您的服務器在端口3000上運行,您需要在連接到您的服務器實例的安全組中打開該端口 –
@DusanBajic是正確的,請參閱http:// docs .aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html – Vorsprung
sry,做錯了。我已經允許端口3000入站快速安全組。我在編輯問題 –