2016-04-05 5 views
0

Google App Engineの柔軟な環境(管理対象VM)でNode JSを使用してExpress Webアプリケーションを開発しています。基本的に私はすべてがAngular JSに動的にロードされるので、私は提供する必要がある静的HTMLページを1つだけ持っています。NodeJSを使用してhtmlファイルを配信し、サブスタティック

Express best practicesを読んでいるうちに、開発中のres.sendFileの使用を妨げていることに気付きました。

私はプロダクションに移行しているので、静的なサービスを使用することをお勧めしますが、res.sendFileをシミュレートする方法を説明するドキュメントは見つかりませんでした。

以下は現在のコードです。

var app = express(); 
app.use(express.static('www')); 
app.get('/', oauth2.required, function (req, res) { 
// ... 
res.sendFile(path.join(__dirname + '/www/dashboard.html')); 
// ... 
}); 
+0

、あなたはあなたの静的なファイルを提供し、サーバーは動的なコンテンツを扱うNode.jsのようにするnginxのサーバーを使用することができます。通常、サーバ静的ファイルの方が遅いnode.jsサーバの要求を、たとえばnginxよりも減らすために、最も最適化されたソリューションです。 – Aaleks

+0

問題は、私はApp Engine Flexで実行していて、nginx設定にアクセスできるかどうかわかりません。 – raz3r

+0

決して使ったことはありませんが、素早くGoogle検索した後、独自のnginx https://cloud.google.com/appengine/docs/flexible/インフラストラクチャのカスタマイズとhttps://クラウドをインストールすることができるようです。 google.com/solutions/https-load-balancing-nginxでも、静的ファイルを提供するためのデフォルトの高速ミドルウェアは、app.use( '/ public'、express.static(path.join(__ dirname、 './public) ')))); – Aaleks

答えて

1

あなたはexpressJS

あなたが のようにヒットし、URLとき内のすべてのファイルは、パブリックフォルダが静的コンテンツとして提供されることを意味し
app.use('/public', express.static(path.join(__dirname, './public'))); 

の静的フォルダの内容を定義することができ、静的なファイルを提供します

EDIT mydomain.com/public/image.png:あなたのdevの環境で可能な場合を

静的ファイルを提供するためにnginxサーバーを使用し、node.jsサーバーが動的コンテンツを処理できるようにすることができます。通常、サーバ静的ファイルの方が遅いnode.jsサーバの要求を、たとえばnginxよりも減らすために、最も最適化されたソリューションです。

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; 
    } 

URLの最初の部分で、/ /市民とのすべての要求は、nginxのによって処理されることができ、他のすべての要求はあなたにプロキシされます通常、ごIPADRESSOFNODEJSSERVER:NODEJSPORTでアプリをnodejs IPADRESSOFNODEJSSERVERは、より良いオプションはUであるNGNIXを使用して第2のオプションは、ドキュメントセクション

を指すローカルホスト

あります静的にサービスするリバースプロキシ ファイル;詳細については、リバースプロキシの使用を参照してください。製造において

http://expressjs.com/en/advanced/best-practice-performance.html#proxy

+0

私はexpress.static関数について知っていますが、res.sendFileを "static-serve"パッケージの適切な関数に置き換える方法はわかりません。 – raz3r

+0

これは正解です。角度のあるアプリをフォルダに入れて、エクスプレスでそのフォルダを静的に提供する必要があります。このように角度は、フロントで明示的にそのことを行い、エクスプレスはAPI呼び出し、永続的なログインなどを処理することができますこれは私のアプリを構築している方法です[MEANBoilerPlate](http://github.com/joeLloyd/MEANBoilerPlate) –

関連する問題