Jestem w trakcie wdrażania serwera na Amazon dla mojej aplikacji. Dlatego postanowiłem użyć EC2 ubunutu 14.04 64-bitowych instancji t2.micro (bezpłatnie). Chcę skalować sprzęt później po przetestowaniu aplikacji. Moim celem jest zbudowanie systemu serwera, który jest gotowy skalować, kiedy chcę. Więc projekt systemu wygląda następująco:Amazon AWS komunikacji wystąpień w VPC
VPC (default)
___________________________________________
| |
WWW <-----|----> NGINX <----> EXPRESS <------> NEO4J |
|___________________________________________|
A potem chcę móc go skalować do sth tak:
VPC (default)
_________________________________________________
| |
| –– EXPRESS -- -- NEO4J |
| | | | |
WWW <-----|----> NGINX -- -- EXPRESS -- -- ELB -- -- NEO4J |
| | | |
| -- EXPRESS -- |
|_________________________________________________|
ale teraz mam pierwszą konfigurację projektu systemu . Stworzyłem 3 wystąpienia Ubuntu. Pierwszym z nich jest konfiguracja z nginx w celu odwrotnego proxy, kompresji gzip i równoważenia obciążenia. Instancja nginx jest dostępna pod adresem http na porcie 80. Instancja express zawiera mój kod węzła/javascript, w którym serwer działa pod numerem Port 3000. ostatnia instancja działa z NEO4J jako moja baza danych NOSQL. Problem polega na tym, że nie mogę pozwolić, aby instancje komunikowały się ze sobą w moim domyślnym VPC. Albo dokładniej, najpierw chcą serwer nginx (port 80) do komunikowania się z moim wyraźnej serwera (port 3000), które znajdują się na różnych przypadkach t2.micro jak pierwszy projekt pokazałem powyżej.
stworzyłem nginx plik konfiguracyjny o nazwie „express” w katalogu sites-available i stworzył dowiązania symbolicznego w katalogu sites-enabled refercing z „express” plik konfiguracyjny.
nginx express config plik wygląda następująco:
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;
}
}
staram się komunikować z moim wyraźnej przykład z PRIVATE_IP.
grupa zabezpieczeń mojego nginx przykład:
grupa zabezpieczeń mojego wyrazić instancję:
grupę zabezpieczeń mojego neo4j przykład:
I może żądać domyślny html nginx (Witamy w Nginx ...) przez http://PUBLIC_DNS_OF_NGINX
. Ale kiedy jestem prośbą sth odwrócone proxy wyrazić http://PUBLIC_DNS_OF_NGINX/test
moje wyraźne serwer nie oddać odpowiedzi (nie osiągnięte przez nginx).
Ale mogę bezpośrednio dotrzeć do wystąpienia ekspresowego i otrzymać odpowiedź przez http://PUBLIC_DNS_OF_EXPRESS:3000/test.
EDYTOWANIE: Zrobiłem ssh na serwerze nginx i zwijam http://PRIVATE_DNS_OF_EXPRESS:3000/test i http://PRIVATE_IP_OF_EXPRESS:3000/test i oba działały. Więc gues jest błędem po stronie serwera nginx. Być może jest to konfiguracja, ale nadal potrzebuję twojej pomocy ...
Jeśli twój serwer działa na porcie 3000, musisz otworzyć ten port w grupie zabezpieczeń dołączonej do instancji twojego serwera –
@DusanBajic ma rację, zobacz http: // docs .aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html – Vorsprung
sry, popełniłem błąd. Już zezwalam na port wejściowy Port 3000 w ramach grupy zabezpieczeń ekspresowych. Edytuję pytanie: –