[英]Which is most efficient : serving static files directly by nginx or by node via nginx reverse proxy?
我已經使用nginx
作為reverse proxy
服務我的node.js
webapps 3000<->80
例如。 實際上,我使用express.static
中間件在節點應用程序中提供我的資產。
我再次閱讀並閱讀nginx提供靜態文件非常有效。
問題是,什么是最好的? 像我已經做的那樣提供資產,或者直接配置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
是本地主機
快遞的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.