
私は、バックエンドとして Tomcat を備えた HTTP サーバーとして nginx を使用しています (proxy_pass を使用)。これはうまく動作しますが、独自のエラー ページ (404、500 など) を定義し、それらが Tomcat ではなく nginx によって提供されるようにしたいと考えています。たとえば、次のリソースがあります。
https://domain.com/resource
存在しません。その URL を [GET] すると、nginx ではなく Tomcat から Not Found メッセージが表示されます。
私が望むのは、Tomcat が 404 (またはその他のエラー メッセージ) で応答するたびに、nginx がユーザーにメッセージ (nginx がアクセス可能な HTML ファイル) を送信することです。
nginx サーバーの設定方法は非常に簡単です。
location / {
proxy_pass http://localhost:8080/<webapp-name>/;
}
また、ポート 8080 (Tomcat) をこのマシンの外部からアクセスできないように構成しました。
location
URL に依存するリソースがいくつかあるため、nginx 構成で異なるディレクティブを使用しても機能しないと思います。
https://domain.com/customer/<non-existent-customer-name>/[GET]
常に 404 (またはその他のエラー メッセージ) を返します。
https://domain.com/customer/<existent-customer>/[GET]
404 (顧客が存在) 以外のものを返します。
Tomcat (アプリケーション サーバー) のエラー メッセージを Nginx (http サーバー) で提供する方法はありますか? ディレクティブによって送信されたメッセージをチェックしproxy_pass
、それに応じて操作するにはどうすればよいでしょうか?
答え1
わかりました。見つかりました。server
私が使用している nginx サイト構成のセクション:
error_page 404 /404.html;
location = /404.html {
root /var/www/nginx;
}
location / {
proxy_pass http://localhost:8080/api/;
proxy_intercept_errors on;
}
proxy_intercept_errors on
nginxに以下を追加する必要があります彼らを阻止する. Nginx は で定義したエラーのみをインターセプトしますerror_page
。