我正在为我的应用程序在亚马逊上部署服务器.因此我决定使用EC2 ubunutu 14.04 64位t2.micro实例(免费).我想在测试我的应用程序之后扩展硬件.我的目标是建立一个准备在我想要的时候扩展的服务器系统.因此系统设计如下所示:
VPC (default)
___________________________________________
| |
WWW <-----|----> Nginx <----> EXPRESS <------> NEO4J |
|___________________________________________|
后来我希望能够将它扩展到这样:
VPC (default)
_________________________________________________
| |
| –– EXPRESS -- -- NEO4J |
| | | | |
WWW <-----|----> Nginx -- -- EXPRESS -- -- ELB -- -- NEO4J |
| | | |
| -- EXPRESS -- |
|_________________________________________________|
但就目前而言,我有第一个系统设计设置.我创建了3个Ubuntu实例.第一个是使用Nginx进行设置,以实现反向代理,gzip压缩和负载平衡.可以通过端口80上的http访问Nginx实例.express实例包含我的节点/ javascript代码,其中服务器在端口3000上运行.最后一个实例运行NEO4J作为我的NOsql数据库.问题现在是,我不能让实例在我的默认VPC中相互通信.或者更确切地说,我首先希望Nginx服务器(端口80)与我的快速服务器(端口3000)进行通信,这些服务器位于不同的t2.micro实例上,就像我上面展示的第一个设计一样.
我在sites-available目录中创建了一个名为“express”的Nginx配置文件,并在启用了站点的目录中创建了一个符号链接,引用了“express”配置文件.
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与我的快速实例进行通信.
我的Nginx实例的安全组:
我可以请求Nginx的默认html(欢迎使用Nginx …)
HTTP:// PUBLIC_DNS_OF_Nginx.
但当我请求反向代理表达http:// PUBLIC_DNS_OF_Nginx / test
我的快递服务器没有回复响应(Nginx没有达到).
但我可以直接到达快递实例并通过获取回复
http://PUBLIC_DNS_OF_EXPRESS:3000/test.
编辑:我做了ssh到Nginx服务器和卷曲http://PRIVATE_DNS_OF_EXPRESS:3000/test和http://PRIVATE_IP_OF_EXPRESS:3000/test两个都工作.所以我猜到Nginx服务器端有一个错误.它可能是我猜的配置,但仍然需要你的帮助……