我想知道我是否使用 apache 在 AWS Lightsail 上正确进行了部署。我已经构建了我的 React 前端并将文件复制到 htdocs。后端在端口 4000 上使用 localhost 运行。我打开端口 4000,然后客户端文件通过端口 4000 访问 api。这样可以吗?我还阅读了一些使用虚拟主机的方法,但我不确定我是否想要这样做。


最佳答案
1

您通常在私有地址空间上运行私有服务,例如localhost127.0.0.1::1)或 unix 域套接字(通常相同但更好,因为它更高效并且开销更少)。对于公共服务,您可以使用反向代理或其他前端服务来细粒度地公开它们。此发布通常使用标准端口进行,例如 HTTPS 使用 443。前端或反向代理通常也会剥离 HTTPS,因此与客户端的通信是安全的,但前端与实际服务的通信是未加密的(因此很快)。虚拟主机(在 Apache 术语中)或服务器(在 Nginx 术语中)是通过名称路由到不同服务的好方法;另一种方法是在 URI 路径中使用不同的前缀。

这样,他们私下监听哪些端口就无关紧要了,因为公共客户端永远看不到甚至不知道它们。

因此,我怀疑客户端直接在非标准端口上访问私有 API 并不是一个好的设置。不过,远程系统不可能访问绑定到本地主机的服务,所以我猜你误解了这里的内容,或者没有告诉我们整个情况。