我已经使用Nginx作为反向代理来为我的node.js webapps 3000< - > 80提供服务.实际上,我使用express.static中间件在节点应用程序中提供我的资产.
问题是,什么是最好的?像我已经做的那样提供资产,或者直接配置Nginx来提供静态文件?
或者几乎一样?
最佳答案
最好的方法是使用Nginx服务器为您提供静态文件,并让node.js服务器处理动态内容.
它通常是最优化的解决方案,可以减少node.js服务器上的请求数量,该服务器对服务器静态文件的速度比Nginx慢,例如:
如果您已经为nodejs app设置了反向代理,那么实现这一目标的配置非常简单.
nd Nginx配置可能是
root /home/myapp;
# Add index.PHP to the list if you are using PHP
index index.html index.htm index.Nginx-debian.html;
server_name _;
location /public/ {
alias /home/myapp/public/;
}
location / {
proxy_pass http://IPADRESSOFNODEJSSERVER:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
# First attempt to serve request as file,then
# as directory,then fall back to displaying a 404.
#try_files $uri $uri/ =404;
}
每个请求/ public /在url的第一部分都将由Nginx处理,其他所有请求都将代理到你的IP地址:IPADRESSOFNODEJSSERVER:nODEJSPORT通常IPADRESSOFNODEJSSERVER是localhost
快递的doc部分告诉http://expressjs.com/en/advanced/best-practice-performance.html#proxy
An even better option is to use a reverse proxy to serve static files;
see Use a reverse proxy for more information.
此外,Nginx将允许您轻松定义缓存规则,因此对于不更改它的静态资产,也可以使用一行加速您的应用程序.
location /public/ {
expires 10d;
alias /home/myapp/public/;
}
你可以在网上找到很多比较这两种方法的文章,例如:
http://blog.modulus.io/supercharge-your-nodejs-applications-with-nginx