使用Nginx运行动态内容

时间:2019-07-08 09:31:19

标签: reactjs nginx

我想使用Nginx运行我的node.js应用程序。我创建了该应用程序的构建,并在nginx.conf中将根目录设置为指向构建文件夹的位置。这有效,我的应用程序在nginx上成功运行。

现在我想知道我是否可以直接通过nginx提供动态内容。就像我如何使应用程序以npm start方式运行一样,我可以使用nginx做类似的事情而不使用build(static)文件吗?

1 个答案:

答案 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上运行有几个原因。

  1. Nginx可以比Express.static或其他节点静态服务器更快地处理静态内容。

  2. 要扩展服务器时,Nginx可以充当负载平衡器。

  3. Nginx已经在互联网上经过了实战测试,因此大多数安全问题已解决或众所周知。相比之下,express或http.server只是库,而是负责应用程序安全的人员。

  4. 与节点相比,Nginx在提供HTTPS方面要快一些。因此,您可以在node中开发一个普通的HTTP服务器,并让nginx处理加密。