我想使用Nginx运行我的node.js应用程序。我创建了该应用程序的构建,并在nginx.conf中将根目录设置为指向构建文件夹的位置。这有效,我的应用程序在nginx上成功运行。
现在我想知道我是否可以直接通过nginx提供动态内容。就像我如何使应用程序以npm start方式运行一样,我可以使用nginx做类似的事情而不使用build(static)文件吗?
答案 0 :(得分:0)
您需要反向代理。
在您的应用程序中。配置服务器以在内部端口上运行。例如3000
。
然后将nginx配置为代理与您的应用程序的连接。这是一个简单的nginx配置,可以做到这一点:
root /path/to/app/build;
# Handle static content
location ^~ /static {
try_files $uri $uri/ =404;
}
# Handle dynamic content
location / {
proxy_pass http://127.0.0.1:3000;
}
或者,如果愿意,可以将URL方案转换为默认为静态文件:
root /path/to/app/build;
# Handle dynamic content
location ^~ /api {
proxy_pass http://127.0.0.1:3000;
}
# Handle static content
location / {
try_files $uri $uri/ =404;
}
使用nginx前端而不是将服务器设置为直接在端口80上运行有几个原因。
Nginx可以比Express.static或其他节点静态服务器更快地处理静态内容。
要扩展服务器时,Nginx可以充当负载平衡器。
Nginx已经在互联网上经过了实战测试,因此大多数安全问题已解决或众所周知。相比之下,express或http.server只是库,而您是负责应用程序安全的人员。
与节点相比,Nginx在提供HTTPS方面要快一些。因此,您可以在node中开发一个普通的HTTP服务器,并让nginx处理加密。