在一个 Internet 域下为多个独立的、未连接的多页面网站提供服务的适当架构?
Proper architecture to serve several separate, unconnected multi-page websites under one single internet domain?
我拥有一个简陋的单服务器互联网域。
我正在从 Apache/php 世界迁移到节点 / angular / react 世界。
在这个领域内,我有各种不同的项目。一个是关于我的城市,另一个是关于我的高中,第三个是我的作品集,等等。
一个项目可能是一个静态 SPA,另一个项目可能是一个巨大且高度动态的专业生产级多页面应用程序,具有多个框架、数据库连接和整个厨房水槽。
一个可能在反应,另一个在 angular。
简而言之,一个非常多样化的技术堆栈分布在封装的应用程序中。
我正处于思考阶段,我正在考虑以现代方式 运行 在一台机器上、在一个域中使用所有这些应用程序的正确方法。
在过去的 Apache 时代,您可以 运行 一个 Apache 实例,它可以毫无问题地提供所有服务。
我是否应该将我的代码文件夹全部构建为一个域网站的子文件夹?
在这个新世界中,如果我有十个网站,我是否必须 运行 十个这样的守护进程实例 选项 A:
One instance of node, or whatever daemon, serves and routes all MPAs:
daemon1
my-domain.com
+--HighSchoolWebsite
+--SanFranciscoWebsite
+--PortfolioPage
或者应该更像这样选项B:
daemon1
+--HighSchoolWebsite
daemon2
+--SanFranciscoWebsite
daemon3
+--PortfolioPage
如果是选项 B,守护进程不会监听不同的端口吗?我将不得不告诉人们使用端口号访问 url,例如 mydomain.com/myportfolio:2452。这个我没见过,所以肯定不是这样的,那到底怎样做才是正确的呢?
我显然已经尝试过谷歌搜索,但大多数答案倾向于讨论一个项目的 MPA,而不是几个不同项目的 SPA+MPA。
显然我是一个有点迷路的初学者,如果有任何提示、技巧、提示、谣言等,我将不胜感激。
非常感谢。
哎呀,感谢所有 downvote 小仙女们对正在努力学习的人如此有帮助。
万一其他人发现自己处于类似阶段,答案是 "process manager" + "reverse proxy"。
进程管理器就像一个永久服务于您的应用程序的命令。它将使您的各种应用程序 运行 永远保留,无论它们是节点,还是 php,或 angular。每个应用程序都可以分配一个昵称。我选择的进程管理器是PM2.
然后,反向代理将传入请求 url 映射到在其所选端口上侦听的特定应用程序。我用的反向代理是nginx。
因此,例如,假设您在端口 1943 上有 phpApp 运行。假设您在 PM2 中将其昵称为 pretty-happy-app。在开发期间,您将访问
http://localhost:1943
看看你的漂亮-php 应用程序 运行。
由于你想a) 外部访问者在不知道端口的情况下访问,实际上你想b) 出于安全原因隐藏端口,所以你使用了像nginx 这样的反向代理。
您配置 nginx 以将 url 映射到端口。在开发期间,假设您使用的是本地计算机,配置将类似于:
http://localhost/pretty-happy-app ---> localhost:1943
一旦你去 public,nginx 会像这样映射:
http://your-domain.com/pretty-happy-app ---> your-public-machine:1943
我希望这对以后的人有所帮助,而不是像那些太酷的学校 downvote 仙女。
我拥有一个简陋的单服务器互联网域。
我正在从 Apache/php 世界迁移到节点 / angular / react 世界。
在这个领域内,我有各种不同的项目。一个是关于我的城市,另一个是关于我的高中,第三个是我的作品集,等等。
一个项目可能是一个静态 SPA,另一个项目可能是一个巨大且高度动态的专业生产级多页面应用程序,具有多个框架、数据库连接和整个厨房水槽。
一个可能在反应,另一个在 angular。
简而言之,一个非常多样化的技术堆栈分布在封装的应用程序中。
我正处于思考阶段,我正在考虑以现代方式 运行 在一台机器上、在一个域中使用所有这些应用程序的正确方法。
在过去的 Apache 时代,您可以 运行 一个 Apache 实例,它可以毫无问题地提供所有服务。
我是否应该将我的代码文件夹全部构建为一个域网站的子文件夹?
在这个新世界中,如果我有十个网站,我是否必须 运行 十个这样的守护进程实例 选项 A:
One instance of node, or whatever daemon, serves and routes all MPAs:
daemon1
my-domain.com
+--HighSchoolWebsite
+--SanFranciscoWebsite
+--PortfolioPage
或者应该更像这样选项B:
daemon1
+--HighSchoolWebsite
daemon2
+--SanFranciscoWebsite
daemon3
+--PortfolioPage
如果是选项 B,守护进程不会监听不同的端口吗?我将不得不告诉人们使用端口号访问 url,例如 mydomain.com/myportfolio:2452。这个我没见过,所以肯定不是这样的,那到底怎样做才是正确的呢?
我显然已经尝试过谷歌搜索,但大多数答案倾向于讨论一个项目的 MPA,而不是几个不同项目的 SPA+MPA。
显然我是一个有点迷路的初学者,如果有任何提示、技巧、提示、谣言等,我将不胜感激。
非常感谢。
哎呀,感谢所有 downvote 小仙女们对正在努力学习的人如此有帮助。
万一其他人发现自己处于类似阶段,答案是 "process manager" + "reverse proxy"。
进程管理器就像一个永久服务于您的应用程序的命令。它将使您的各种应用程序 运行 永远保留,无论它们是节点,还是 php,或 angular。每个应用程序都可以分配一个昵称。我选择的进程管理器是PM2.
然后,反向代理将传入请求 url 映射到在其所选端口上侦听的特定应用程序。我用的反向代理是nginx。
因此,例如,假设您在端口 1943 上有 phpApp 运行。假设您在 PM2 中将其昵称为 pretty-happy-app。在开发期间,您将访问
http://localhost:1943
看看你的漂亮-php 应用程序 运行。
由于你想a) 外部访问者在不知道端口的情况下访问,实际上你想b) 出于安全原因隐藏端口,所以你使用了像nginx 这样的反向代理。
您配置 nginx 以将 url 映射到端口。在开发期间,假设您使用的是本地计算机,配置将类似于:
http://localhost/pretty-happy-app ---> localhost:1943
一旦你去 public,nginx 会像这样映射:
http://your-domain.com/pretty-happy-app ---> your-public-machine:1943
我希望这对以后的人有所帮助,而不是像那些太酷的学校 downvote 仙女。