通过利用Nginx提供静态文件来加快Node.js和Socket.io Web应用程序的加载时间
Node.js是一个出色的JavaScript运行时环境, 你可以用来从中服务整个Web资产(静态+动态)。
如果你正在从事小型的实验性项目, 那么可能就可以了, 但是, 如果考虑到响应时间, 则必须考虑在Node.js之前使用Nginx之类的Web服务器来提供静态文件。
实际上, 不仅要提供静态文件, 而且从安全角度考虑, 你都应该考虑使用Nginx。
最近, 我正在研究Site Relic(网站SEO和安全分析器), 在这里我使用Node.js, Socket.io, 并且能够通过从Nginx卸载静态文件来缩短显着的响应时间。
如你所见, 当我在29日将静态文件移至Nginx时, 响应时间大大减少了。
因此, 如果你使用Node.js交付图像, js, CSS, 字体等, 则请考虑并考虑分开职责。
让我们看看我是如何做到的。
假设你已经安装了Nginx和Node.js。进行修改之前, 请对现有配置进行备份, 以便在出现问题时进行回滚。
- 转到安装Nginx的位置(在基于UNIX的操作系统(如CentOS / Ubuntu)上, 默认值为/ etc / nginx)
- 转到可用的站点
- 使用以下命令创建一个新文件(为便于理解, 你可以将该文件命名为域名)
upstream backend {
server localhost:3000;
}
server {
listen 80;
server_name siterelic.com;
root /var/tools/public;
location / {
try_files $uri @backend;
}
location @backend {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Following is necessary for Websocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
以上是五个关键要素, 让我一一讲解。
- 上游–将变量指定为”后端”, 并提供node.js服务器和端口信息。在一个示例中, 我给了localhost:3000, 这意味着我正在与Nginx一起在具有3000端口号的同一服务器上运行node.js。
- 服务器–给出Nginx应该监听的端口号, 并以服务器名作为你的域名。
- 根目录–你要在其中提供静态文件的目录。
- 位置-这很重要。我要求Nginx尝试在具有根位置的指定目录中查找文件, 如果不匹配, 请转到@backend, 即node.js
- [电子邮件保护] –这是通用的node.js + websocket.io代理配置
通过创建符号来启用/ etc / nginx / sites-enabled中的站点
- cd / etc / nginx / sites-enabled
- ln -s / etc / nginx / sites-available / $ yourdomainname。
重新启动Nginx, 玩得开心!
通过以上配置, 我能够显着改善响应时间, 希望你也可以。
如果你是Nginx的新手, 那么你可能会对学习如何从头开始构建高性能Nginx服务器感兴趣。
评论前必须登录!
注册