我正在为我的应用程序在Amazon上部署服务器。因此我决定使用EC2 ubunutu 14.04 64位t2.微实例(免费)。在测试我的应用程序之后,我想在以后扩展硬件。我的目标是建立一个服务器系统,准备在我想要的时候扩大规模。因此,系统设计如下:
VPC (default)
___________________________________________
| |
WWW <-----|----> NGINX <----> EXPRESS <------> NEO4J |
|___________________________________________|后来我想把它扩大到这样的程度:
VPC (default)
_________________________________________________
| |
| –– EXPRESS -- -- NEO4J |
| | | | |
WWW <-----|----> NGINX -- -- EXPRESS -- -- ELB -- -- NEO4J |
| | | |
| -- EXPRESS -- |
|_________________________________________________|但现在,我有了第一个系统设计设置。我创建了3个Ubuntu实例。第一个是使用nginx进行反向代理、gzip压缩和负载平衡的设置。可以通过端口80上的http访问nginx实例。快捷实例包含我的代码,服务器运行在端口3000上。最后一个实例是以NEO4J作为我的NOSQL运行的。现在的问题是,我不能让实例在我的默认VPC中相互通信。或者更准确地说,我首先希望nginx服务器(端口80)与位于不同t2上的快速服务器(端口3000)进行通信。
我在站点可用目录中创建了一个名为"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进行通信。
nginx实例的安全组:

我的express实例的安全组:

我的neo4j实例的安全组:

我可以请求默认的html的nginx (欢迎来到Nginx .)通过http://PUBLIC_DNS_OF_NGINX。但是,当我请求反向代理来表示http://PUBLIC_DNS_OF_NGINX/test时,我的快速服务器不会返回一个响应(nginx没有到达)。
但是我可以直接到达express实例,并通过EXPRESS:3000/test获得响应。
编辑:我在nginx服务器和curl EXPRESS:3000/test和EXPRESS:3000/test中做了ssh,并且都工作过。所以我认为在nginx服务器端出现了一个错误。我想可能是配置,但还是需要你的帮助.
发布于 2016-09-15 08:17:52
实际上,它现在起作用了,这些吐露一直都是正确的,我不需要一个“附加/”。我刚刚创建了一个新实例,并将所有配置复制到那个新实例中,但现在一切看起来都很好。从一开始就有一些设置问题..。
发布于 2016-09-06 10:40:10
您的设置应该按照以下方式进行
1)打开分配给Nginx服务器的安全组上的80或443端口。2)在分配给javascript服务器(Express)的安全组上打开自定义TCP端口3000。允许您从nginx计算机、私有ip或分配给nginx计算机的安全组(AWS控制台允许此)3上端口3000上的通信量,最后再次打开分配给DB服务器的安全组上的nosql DB端口,并允许来自java脚本(Express)服务器IP或java脚本服务器安全组的通信。
注意:请避免仅出于安全原因而允许安全组22端口上的所有流量。
发布于 2016-09-14 17:11:31
在我看来,似乎是一个简单的问题,其中您的nginx配置路由来表达是错误的配置。您忽略了在/指令的末尾附加一个nginx,因为nginx将重路由到http://nodestest。将nginx配置重写为
upstream nodes{
server PRIVATE_IP:3000;
keepalive 8;
}
server{
listen *:80;
location / {
proxy_pass http://nodes/; //appended forward slash
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;
}
}配置更改完成后,使用命令nginx重新加载sudo service nginx reload
https://stackoverflow.com/questions/39346309
复制相似问题