2016-04-16 7 views
1

私はNode.jsアプリケーションをポート3000で実行し、NGINXをプロキシとして使用しています。静的ファイルもNGINXによって提供されています。サイト内のconf-enabled:NGINXで静的ファイルを処理するときにNode.jsから404で応答するにはどうすればよいですか?

server { 
    listen 80; 
    server_name myapp.dev; 

    location ~ ^/(img/|js/|css/|robots.txt|favicon.ico) { 
     root /srv/nodejs/myapp/public; 
     access_log off; 
     expires max; 
    } 

    location/{ 
     proxy_pass http://127.0.0.1:3000; 
     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; 
    } 
} 

現時点ではすべて正常に動作しています。しかし、存在しない静的ファイル(/css/doesntexist.css)が要求されると、デフォルトのNGINX 404ページが取得されます。

カスタム404ページ(例:/404.html)にユーザーをリダイレクトすることは可能ですが、Nodeアプリケーションからカスタム404を表示している間は、URLが存在しないパスを指しているようにします。

アイデア?

+1

'error_page'を使ってみましたか? –

+0

チップをありがとう。私はRTFMをすべきだと思います。 – Botch

答えて

0

次のように動作しました。

location ~ ^/(img/|js/|css/|robots.txt|favicon.ico) { 
    access_log off; 
    expires max; 
    error_page 404 = @not_found; 
} 

location @not_found { 
    proxy_pass http://127.0.0.1:3000; 
} 

NGINX documentation for the error_pageオプションの例に基づいています。

関連する問題