我知道这是主观且有主见的,我只需要从了解最佳实践开始就可以了。
我有一个MERN app
在localhost
上运行,而react脚本当前在port 3000
上运行,而Express应用程序在port 3001
上运行。
现在我要在AWS上进行实时设置,并想知道是否应该像这样创建它
前端的 website.com
通过NGINX路由来自端口80 to 3000
的任何内容进行响应,同时它调用与在{{1}相同实例上运行在api.website.com
上的3001
}和`api.website.com具有相同的ip
或
在不同IP上的website.com的一个单独实例,在不同IP上的API调用的website.com
的另一个实例?都无需指定端口即可访问它们
我很好奇,因为大多数时候我都使用过API,它们没有单独的端口,只是我认为是不同IP和实例的子域。
牢记我要使用SSL的最佳方式是什么?
答案 0 :(得分:1)
通过SSL服务静态应用程序不是必需的,但是另一方面,您的服务器应用程序必须受到保护。直接与数据库交互的堆栈的一部分非常关键,必须加以保护以防止发生各种漏洞。除非您遵循最佳实践来保护节点应用程序安全,否则只有SSL不会发挥任何作用。
您可以将子域用于节点应用程序,并将根域用于实际站点。另外,通过在nginx配置文件中定义不同的服务器部分,您可以将80端口用于网站,将443端口用于节点应用程序。
下面是一些链接,您可以在其中找到在生产上部署节点应用程序时要遵循的最佳实践。
答案 1 :(得分:1)
我想说Nginx通过SSL证书暴露于世界,所有流量都重定向到端口443。
所有其他内容都绑定到127.0.0.1,并通过Nginx进行代理。设置Nginx来接受对端口443上的api.website.com
的请求,然后将它们代理到127.0.0.1:3000或3001或其他任何东西,都很简单。
然后对所有其他随机端口进行防火墙,并绝对通过Nginx路由所有传入流量。