哪一个最有效率:通过nginx直接提供静态文件,还是通过nginx反向代理来提供节点?

我已经使用nginx作为reverse proxy服务我的node.js webapps 3000<->80例如。 实际上,我使用express.static中间件服务于节点应用程序中的资产。

我再次阅读和阅读,nginx是非常有效的服务静态文件。

问题是什么是最好的? 像我已经做的那样服务资产或者configurationnginx直接为静态文件提供服务?

还是几乎一样?

最好的方法是使用nginx服务器为您提供静态文件,并让您的node.js服务器处理动态内容。

它通常是最优化的解决方案,用于减少服务器静态文件比nginx慢的node.js服务器上的请求数量,例如:

如果您已经为您的nodejs应用程序设置了反向代理,那么实现该配置非常容易。

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处理,其他所有请求都将在您的IPADRESSOFNODEJSSERVER:NODEJSPORT代理给您nodejs应用程序IPADRESSOFNODEJSSERVER:NODEJSPORT通常IPADRESSOFNODEJSSERVER是本地主机

明确的doc部分告诉: http : //expressjs.com/en/advanced/best-practice-performance.html#proxy

更好的选择是使用反向代理来提供静态文件; 有关更多信息,请参阅使用反向代理。

而且,nginx可以让你轻松定义缓存规则,因此对于不改变的静态资产,它可以加快你的应用程序的速度。

 location /public/ { expires 10d; alias /home/myapp/public/; } 

你可以在互联网上找到很多比较这两种方法的文章,例如: http : //blog.modulus.io/supercharge-your-nodejs-applications-with-nginx