我正在尝试建立一个链接到多个 nodejs 应用程序的网站。
www.example.com/app1
www.example.com/app2
app1 和 app2 都托管在 AWS Elastic Beanstalk 上。
http://app1.us-west-2.elasticbeanstalk.com
http://app2.us-west-2.elasticbeanstalk.com
如何在不更改浏览器中的 URL 的情况下将 example.com 上的子目录重定向到这些应用程序?
我是否应该在 EBS 上创建第三个应用程序并将 example.com 与其关联。然后在其上使用 nginx 重定向到特定应用程序?
抱歉说得不清楚。我对这个东西还不熟悉。
答案1
你可以通过 来完成nginx
。你的配置应该如下所示:
server {
listen 80;
location /app1 {
proxy_pass http://app1.us-west-2.elasticbeanstalk.com:80;
}
location /app2 {
proxy_pass http://app2.us-west-2.elasticbeanstalk.com:80;
}
}
答案2
@Alexander 谢谢。虽然我遇到了静态文件获取 404 的问题,但这个方法奏效了:https://stackoverflow.com/questions/36849456/nginx-reverse-proxy-404-on-static-files
if ($uri ~ app1/) {
break;
}
if ($http_referer ~ app1/ ) {
rewrite (.*) /app1/$1 redirect;
}
location /app1/ {
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://app1.compute.amazonaws.com:3001/ ;
}
尽管如链接中所述。它不适用于 POST 查询 :/