簡體   English   中英

哪個最有效:通過nginx或節點通過nginx反向代理直接提供靜態文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM