【发布时间】:2016-04-28 18:58:33
【问题描述】:
我正在学习开发和部署 MEAN 堆栈应用程序的基础知识,因此如果有错误,请更正其中的任何部分。我将解释我当前的设置,以及我正在尝试做的事情。
设置
我有一个 AWS EC2 实例,我希望将其用于我的所有 MEAN 堆栈应用程序,以及一个主要用于处理 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;
}
}
}
我正在运行的 Node 应用程序是按照教程制作的应用程序,名为 Vidzy。如果我现在通过 HTTP 或 HTTPS 访问我的网站,一切都运行良好。但是,这就是我想要做的。
问题
基本上,我希望能够运行多个 MEAN 应用程序,这些应用程序可通过同一域上的不同 URL 访问。例如,要访问 Vidzy,我想访问 http://[domain].com/vidzy/。
我尝试以各种方式自己修改 Nginx 配置文件,但没有任何效果。我尝试的第一件事是将服务器的 location 部分更改为 /vidzy 而不仅仅是 /。但是这样做,该应用程序似乎非常糟糕。
我仍在尝试了解 MEAN 应用程序的组件如何相互交互。似乎是在尝试将位置更改为 /Vidzy 时出现问题,它以这样一种方式使应用程序混乱,导致应用程序的 public 文件夹中的文件无法可以使用新的 URL 结构找到。
我正在做的事情是否可行?如果是这样,我搞砸了多少?
【问题讨论】:
-
我不熟悉 MEAN 堆栈,但您可以尝试
proxy_pass http://vidzyApp/;以确保location /vidzy/映射到 Node 应用程序的根目录。确保在两个 URI 上都以/结尾。
标签: angularjs node.js nginx amazon-ec2 mean-stack