検索
ホームページ運用・保守Nginxnginx で Tomcat を使用する方法

nginx で Tomcat を使用する方法

May 21, 2023 pm 01:07 PM
nginxtomcat

Tomcat と nginx

を組み合わせた使用の概要 nginx について聞いたことがある人は多いと思いますが、この小さなものは、Apache や IIS のシェアを徐々に侵食しています。それで、それは正確に何をするのでしょうか?もしかしたら理解できない人も多いかもしれません。

リバースプロキシといえば聞いたことがある人は多いかもしれませんが、リバースプロキシが何なのかは知らない人も多いかもしれません。 Baidu Encyclopedia から説明を引用します:

  1. リバースプロキシ方式とは、プロキシサーバーを利用してインターネット上の接続要求を受け付け、その要求を内部ネットワーク上のサーバーに転送し、サーバーから得られた結果をインターネット上の接続要求を行ったクライアントに返す方式です。同時に、プロキシ サーバーは外部からはサーバーとして認識されます。 ################################## ここはとても簡単です。リバースプロキシ方式は、実際にはプロキシサーバーが転送を担当するもので、実サーバーのように動作しているように見えますが、実際はそうではなく、プロキシサーバーはフォワーダーとして動作し、実サーバーから返されたデータを取得するだけです。このようにして、nginx は実際にこの種の作業を完了します。 nginx にポート 80 などのポートをリッスンさせますが、実際にはポート 8080 で tomcat に転送し、実際のリクエストを処理します。リクエストが完了すると、tomcat は戻りますが、この時点ではデータは直接返されません。 , ただし、直接 nginx に渡すと、nginx がそれを返します。ここでは nginx が処理していると考えますが、実際に処理しているのは Tomcat です。

  2. 上記の方法といえば、静的ファイルをnginxで処理できるようにするため、また思い当たる人も多いかもしれません。はい、nginx が使用される多くの場所は、CSS、JS、html、htm およびその他のファイルなどの静的ファイルを簡単にキャッシュできる静的サーバーとして使用されます。

早速、nginx の使用方法を見てみましょう。

1) もちろん、使用したいソフトウェアをダウンロードする必要があります。次は nginx 公式 Web サイトにアクセスしてください。現在使用しているバージョンは 1.1.7 ですが、基本的に今後のバージョンはすべて互換性があり、使用しているものはあまり低レベルな部分を含まないため、変更はありません。

ここでは、私の場合はWindowsなので、当然Windows版をダウンロードします。ダウンロードしたら、まず起動する必要があります。 nginx フォルダーに入り、nginx を直接起動します。

たとえば、ダウンロードした後、D:\software\developerTools\server\nginx-1.1.7 に置き、直接 cmd してから cd D:\software\developerTools\server\nginx-1.1.7 を実行します。コマンドラインに慣れている人は驚くかもしれませんが、そのフォルダーに進みません。自分で指定しない限り、Windows はパーティション間を移動しません。したがって、次のように d: を直接実行する必要があります:

この時点でタスク マネージャーを開くと、そこに 2 つの nginx.exe が表示されます。これは、すでに開始していることを示していますが、その理由については、ここでは詳しく説明しません。

nginx で Tomcat を使用する方法

この時点でタスク マネージャーを開くと、2 つの nginx.exe プロセスが正常に実行されていることがわかります。これは、すでに開始していることを示していますが、その理由については、ここでは詳しく説明しません。

nginx で Tomcat を使用する方法

nginx を起動したので、tomcat を起動できます。http://localhost に直接アクセスしたい場合は、tomcat に直接アクセスできます。

nginx で Tomcat を使用する方法 心配しないで、nginx が起動後にどのようになるかを見てみましょう。 http://localhost に直接アクセスして、

を確認します。 nginx が正常に起動し、nginx ディレクトリに直接アクセスできるようになったことがわかります。

nginx で Tomcat を使用する方法 では、これらは実際にはどこで設定されているのでしょうか。これには、nginx の重要な設定ファイルである nginx.conf が関係します。

2) nginx フォルダー内に conf フォルダーがあり、いくつかのファイルが含まれていることがわかります。他のファイルには関係なく、nginx.conf を開くと、

# のセクションが表示されます。 # # このコードはサーバー内にあり、プロキシサーバーに相当しますが、もちろん複数設定することも可能です。

慎重に分析しましょう: nginx で Tomcat を使用する方法

listen: 現在のプロキシ サーバーがリッスンするポートを示します。デフォルトはポート 80 をリッスンします。複数のサーバーを構成する場合は、リスナーを別の方法で構成する必要があることに注意してください。そうしないと、どこに行くかを決定できなくなります。

server_name: リスニング後のどこに行くかを示します、この時はローカルエリアに直接行きます、この時はnginxフォルダに直接行きます。

location: 一致するパスを示します。この時点で、/ はすべてのリクエストがここで一致することを示すように設定されています

ルート: ルートが設定されているため、このリクエストのパスが一致すると、対応するファイルがこのフォルダー内に見つかります。これは、後続の静的ファイルの提供に非常に役立ちます。

Index: ホーム ページが指定されていない場合、指定されたファイルがデフォルトで選択されます。複数のファイルが存在する可能性があり、それらは順番にロードされます。最初のファイルが存在しない場合は、2 番目のファイルが見つかります。以下同様です。

以下の error_page はエラーを表すページですが、ここでは当面使用しないので無視します。

次に、具体的な構成、つまり localhost にアクセスするときに Tomcat に切り替える方法がわかります。実際、変更する必要があるのは 2 か所だけです:

1 server_name localhost:8080;   
2   
3 location / {   
4     proxy_pass http://localhost:8080   
5 }

上記 2 か所を変更しました。私の Tomcat はポート 8080 にあります。必要に応じて変更できます。ここには新しい要素 proxy_pass があり、これはプロキシ パスを表します。これは、以前に指定する必要があったルートとは異なり、転送に相当します。

ファイルを変更したので、nginx をシャットダウンしてから再起動する必要があるということでしょうか? 実際、その必要はなく、nginx はファイルをリロードできます。

直接実行します:

nginx で Tomcat を使用する方法

# 喜ぶのはまだ早いです。エラーが見つかりました:

nginx で Tomcat を使用する方法

何が起こったのでしょうか? 45 行目にエラーが見つかりました。その行では } を見つけたくなかったので、慎重に調べたところ、追加した proxy_pass が奇妙であることがわかりました。; 記号で終わっていませんでした。これは、問題が発生しました。直接変更してから再度実行しました。エラーがないことがわかりました。OK。

直接ロードしたくないが、構成ファイルに問題があるかどうかだけを確認したい場合は、次のように直接入力できます:

nginx で Tomcat を使用する方法

これにより、構成ファイルにエラーがないかチェックされます。以下のすべての変更は、変更の完了後に nginx -s reload を実行して構成ファイルをリロードすることを前提としています。

次に http://localhost を再度開くと、次のページが表示されます:

nginx で Tomcat を使用する方法

この時点では、先ほどのウェルカムページではなく、tomcatの管理ページであることが分かりましたが、どのリンクをクリックしても問題なく、http://localhost:8080に直接アクセスするのと同等です。

3) 上記では、nginx を転送する小さな例 (いわゆるリバース プロキシ) を直接試しました。しかし、実際には、私たちのニーズはこのようなものではありません。ファイル タイプでフィルタリングする必要があります。たとえば、nginx はサーブレット コンテナではないため JSP を処理できませんが、html、js、および css は処理できないため、jsp は tomcat によって直接処理されますはい、nginx に直接キャッシュします。

JSPページはtomcatに直接送信し、一部の画像やhtml、pngなどのJSはnginxで直接キャッシュされるように設定しましょう。

現時点で使用する最も重要なことは location 要素であり、これにはいくつかの規則的なルールが含まれますが、難しいことではありません:

1 location ~ \.jsp$ {   
2         proxy_pass http://localhost:8080;   
3 }   
4            
5 location ~ \.(html|js|css|png|gif)$ {   
6     root D:/software/developerTools/server/apache-tomcat-7.0.8/webapps/ROOT;   
7 }

すべてのリクエストが傍受されないようにするために、最初に以前に構成された場所を削除する必要があります。

次に、http://localhost

nginx で Tomcat を使用する方法

を見てみましょう。 jspページを指定しない場合、この時点では対応する場所が存在しないため検索されず、404エラーが発生し、nginxカスタムエラーページにジャンプします。

http://localhost/index.jsp を使用してアクセスすると、見慣れたページ nginx で Tomcat を使用する方法

が表示されます。 画像は png であるため、通常どおり表示されます。したがって、tomcat/webapps/ROOT ディレクトリで直接検索できます。もちろん、Manager Application HOW-TO リンクをクリックすると、

# が見つかります。

nginx で Tomcat を使用する方法

## まだ見つからないのですが、なぜですか?これは HTML ページですが、ROOT ディレクトリではなく docs ディレクトリにありますが、html に一致する場合は ROOT ディレクトリに移動して検索するため、依然としてページを見つけることができません。

通常の状況では、静的ファイルを提供するために nginx を使用する必要がある場合、通常、tomcat のような状況が起こらないように、すべての静的ファイル、html、htm、js、css などを同じフォルダーに置きます。 Tomcat の下にあるものは別のプロジェクトに属しているため、これについては何もできません。

3) これらは 1 つのサーバーしか見つけられないという人もいますが、1 つのサーバーがハングアップしたときに別のサーバーを自動的に見つけたい場合はどうすればよいでしょうか。これは実際にはnginxによって考慮されています。

このとき、以前使用した proxy_pass が非常に役立ちます。

前の最初の例、つまりすべてのエージェントを変更しましょう:

最終的な変更は次のとおりです:

 1 upstream local_tomcat {   
 2     server localhost:8080;   
 3 }   
 4   
 5 server{   
 6         location / {   
 7            proxy_pass http://local_tomcat;   
 8         }   
 9         #......其他省略   
10 }
サーバーの外部にアップストリームを追加し、http://upstream の名前を使用して proxy_pass で直接使用しました。

我们还是直接来http://localhost,还是和第一个一样的效果,所有链接都没问题,说明我们配置正确。

upstream中的server元素必须要注意,不能加http://,但proxy_pass中必须加。

我们刚才说可以在一个服务器挂了的情况下连到另外一个,那怎么弄呢?

其实很简单,在upstream中的local_tomcat中配置多一个server。比如我现在弄多一个jetty,端口在9999,所以我们配置如下:

1 upstream local_tomcat {   
2     server localhost:8080;   
3     server localhost:9999;   
4 }

此时,我们关闭tomcat,而只开jetty。我们来运行http://localhost看看效果:

nginx で Tomcat を使用する方法

我们看到它请求到了jetty的页面,但由于jetty的机制,这时没有显示jetty主页,这个我们先不管。但我们的在一个服务器挂的情况下自动使用另外一个的功能实现了。

但有时我们就不想它挂的时候访问另外一个,而只是希望一个服务器访问的机会比另外一个大,这个可以在server最后加上一个weight=数字来指定,数字越大,表明请求到的机会越大。

1 upstream local_tomcat {   
2     server localhost:8080 weight=1;   
3     server localhost:9999 weight=5;   
4 }

这时我们给了jetty一个更高的权值,让它更有机会访问到,实际上当我们刷新http://localhost访问的时候发现jetty访问机率大很多,tomcat几乎没机会访问,一般情况下,如果我们必须这样用,不要相关太大,以免一个服务器负载太大。

当然,server还有一些其他的元素,比如down表示暂时不用到该服务器等等。这些可以参考nginx的wiki。也许写了一大堆,有人会有问题,那nginx怎么关闭呢?这倒是个问题,其实直接运行nginx -s stop就可以关闭了。

以上がnginx で Tomcat を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Nginx vs. Apache:Webサーバーテクノロジーの比較Nginx vs. Apache:Webサーバーテクノロジーの比較May 02, 2025 am 12:08 AM

Nginxは、高い並行性と静的コンテンツの処理に適していますが、Apacheは動的な内容と複雑なURL書き換えに適しています。 1.Nginxは、高い並行性に適したイベント駆動型モデルを採用しています。 2。Apacheは、動的なコンテンツに適したプロセスモデルまたはスレッドモデルを使用します。 3。NGINX構成は簡単ですが、Apache構成は複雑ですが、より柔軟です。

NginxとApache:展開と構成NginxとApache:展開と構成May 01, 2025 am 12:08 AM

NginxとApacheにはそれぞれ独自の利点があり、選択は特定のニーズに依存します。 1.NGINXは、単純な展開を備えた高い並行性に適しており、構成の例には仮想ホストとリバースプロキシが含まれます。 2。Apacheは複雑な構成に適しており、展開も同様に簡単です。構成の例には、仮想ホストとURL書き換えが含まれます。

Nginxユニットの目的:Webアプリケーションの実行Nginxユニットの目的:Webアプリケーションの実行Apr 30, 2025 am 12:06 AM

Nginxunitの目的は、Webアプリケーションの展開と管理を簡素化することです。その利点には、次のものが含まれます。1)Python、PHP、Go、Java、node.jsなどの複数のプログラミング言語をサポートします。 2)動的構成と自動リロード関数を提供します。 3)統一されたAPIを介してアプリケーションライフサイクルを管理します。 4)非同期I/Oモデルを採用して、高い並行性と負荷分散をサポートします。

Nginx:高性能Webサーバーの紹介Nginx:高性能Webサーバーの紹介Apr 29, 2025 am 12:02 AM

Nginxは2002年に開始され、C10Kの問題を解決するためにIgorsysoevによって開発されました。 1.Nginxは、高性能の非同期アーキテクチャであり、高い並行性に適した高性能Webサーバーです。 2。システムのパフォーマンスと信頼性を向上させるために、リバースプロキシ、ロードバランス、キャッシュなどの高度な機能を提供します。 3。最適化手法には、HTTP/2とセキュリティ構成を使用した、ワーカープロセスの数の調整、GZIP圧縮の有効化が含まれます。

Nginx vs. Apache:アーキテクチャを見てくださいNginx vs. Apache:アーキテクチャを見てくださいApr 28, 2025 am 12:13 AM

NginxとApacheの主なアーキテクチャの違いは、Nginxがイベント駆動型の非同期非ブロッキングモデルを採用し、Apacheはプロセスまたはスレッドモデルを使用することです。 1)nginxは、静的な内容と逆プロキシに適したイベントループとI/O多重化メカニズムを介して、高電流接続を効率的に処理します。 2)Apacheは、非常に安定しているがリソース消費量が高いマルチプロセスまたはマルチスレッドモデルを採用しており、リッチモジュールの拡張が必要な​​シナリオに適しています。

Nginx vs. Apache:長所と短所を調べますNginx vs. Apache:長所と短所を調べますApr 27, 2025 am 12:05 AM

Nginxは、高い同時コンテンツと静的コンテンツの処理に適していますが、Apacheは複雑な構成と動的コンテンツに適しています。 1。NGINXは、交通量の多いシナリオに適した同時接続を効率的に処理しますが、動的コンテンツを処理するときは追加の構成が必要です。 2。Apacheは、複雑なニーズに適したリッチモジュールと柔軟な構成を提供しますが、並行性のパフォーマンスが低いです。

NginxとApache:重要な違​​いを理解するNginxとApache:重要な違​​いを理解するApr 26, 2025 am 12:01 AM

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

Nginxユニット:主要な機能と機能Nginxユニット:主要な機能と機能Apr 25, 2025 am 12:17 AM

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター