Maison > Opération et maintenance > Nginx > Comment utiliser Tomcat avec Nginx

Comment utiliser Tomcat avec Nginx

王林
Libérer: 2023-05-21 13:07:06
avant
1966 Les gens l'ont consulté

Résumé de l'utilisation de Tomcat combiné avec nginx

Je crois que beaucoup de gens ont entendu parler de nginx. Cette petite chose engloutit lentement la part d'Apache et d'IIS. Alors, ça fait quoi exactement ? Peut-être que beaucoup de gens ne le comprennent pas.

En parlant de proxy inverse, de nombreuses personnes en ont peut-être entendu parler, mais beaucoup ne savent peut-être pas ce qu'est un proxy inverse. Prenez une description de l'Encyclopédie Baidu :

  1. La méthode du proxy inverse consiste à utiliser un serveur proxy pour accepter les demandes de connexion sur Internet, puis à transmettre les demandes au serveur sur le réseau interne et à renvoyer les résultats obtenus du serveur au client demandant une connexion sur Internet. À ce moment-là, le serveur proxy apparaît comme un serveur pour le monde extérieur.

C'est très simple ici. La méthode proxy inverse est en fait un serveur proxy responsable du transfert. Elle semble agir comme un vrai serveur, mais en réalité ce n'est pas le cas. Le serveur proxy agit uniquement comme un redirecteur et obtient les données renvoyées par le serveur réel. De cette façon, nginx accomplit réellement ce genre de travail. Nous laissons nginx écouter un port, tel que le port 80, mais en fait nous le transmettons à Tomcat sur le port 8080, qui gère la vraie requête. Lorsque la requête est terminée, Tomcat revient, mais les données ne sont pas renvoyées directement pour le moment. , mais donnez-le directement à nginx et renvoyez-le à nginx Ici, on pensera que nginx le traite, mais en fait c'est Tomcat qui le traite.

En parlant de la méthode ci-dessus, beaucoup de gens pourraient y repenser, afin que les fichiers statiques puissent être traités par nginx. Oui, de nombreux endroits où nginx est utilisé sont utilisés comme serveurs statiques, qui peuvent facilement mettre en cache des fichiers statiques, tels que CSS, JS, html, htm et autres fichiers.

Sans plus tarder, voyons comment utiliser nginx.

1) Bien entendu, vous devez télécharger le logiciel que vous souhaitez utiliser. Accédez au site officiel de nginx pour le prochain. La version que j'utilise actuellement est la 1.1.7, mais fondamentalement, toutes les versions futures sont compatibles, et ce que nous utilisons n'implique pas d'aspects de trop bas niveau, il ne devrait donc y avoir aucun changement.

Ici, puisque le mien est Windows, je télécharge bien sûr la version Windows. Après le téléchargement, vous devez d'abord le démarrer. Entrez dans le dossier nginx et démarrez nginx directement.

Par exemple, après le téléchargement, je l'ai mis dans D:softwaredeveloperToolsservernginx-1.1.7, directement cmd puis cd D:softwaredeveloperToolsservernginx-1.1.7. Certaines personnes qui ne sont pas habituées à la ligne de commande peuvent être surprises qu'elle n'aille pas vers. ce dossier. Windows ne passera pas d'une partition à l'autre sauf si vous le spécifiez vous-même. Il faut donc directement d: comme suit :

Comment utiliser Tomcat avec Nginx

À ce stade, nous ouvrons le gestionnaire de tâches et nous pouvons y voir deux nginx.exe. Cela montre que nous avons déjà commencé. Quant au pourquoi, nous n’y reviendrons pas ici.

Comment utiliser Tomcat avec Nginx

À ce stade, nous ouvrons le gestionnaire de tâches et pouvons voir les deux processus nginx.exe s'y exécuter correctement. Cela montre que nous avons déjà commencé. Quant au pourquoi, nous n’y reviendrons pas ici.

Comment utiliser Tomcat avec Nginx

Maintenant que nous avons démarré nginx, nous pouvons démarrer Tomcat. Si nous voulons accéder directement à http://localhost, nous pouvons accéder directement à Tomcat.

Ne vous inquiétez pas, regardons à quoi ressemble nginx après le démarrage. Visitez directement http://localhost pour voir :

Comment utiliser Tomcat avec Nginx

Nous pouvons voir que nginx démarre avec succès, et maintenant l'accès se fait directement dans le répertoire nginx.

Alors, où sont-ils réellement configurés ? Cela implique nginx.conf, un fichier de configuration important de nginx.

2) On voit qu'il y a un dossier conf dans le dossier nginx, qui contient plusieurs fichiers, on ignore les autres, on ouvre nginx.conf et on peut voir un paragraphe

Comment utiliser Tomcat avec Nginx

. Ce code est dans le serveur et équivaut à un serveur proxy. Bien entendu, plusieurs peuvent être configurés.

Analysons-le en détail ci-dessous :

écouter : indique le port sur lequel le serveur proxy actuel écoute. La valeur par défaut est d'écouter le port 80. Notez que si nous configurons plusieurs serveurs, l'écouteur doit être configuré différemment, sinon nous ne pourrons pas déterminer où aller.

server_name : Indique où aller après l'écoute. A ce moment, on va directement dans la zone locale. À ce moment, c'est directement dans le dossier nginx.

location : indique le chemin correspondant. À ce stade, / est configuré pour indiquer que toutes les demandes correspondent ici

. Root : Root y est configuré, ce qui signifie que lorsque le chemin de cette requête correspond, le fichier correspondant sera trouvé dans ce dossier. Ceci est très utile pour notre service de fichiers statiques ultérieur.

index : Lorsqu'aucune page d'accueil n'est spécifiée, le fichier spécifié sera sélectionné par défaut. Il peut y avoir plusieurs fichiers et ils seront chargés dans l'ordre. Si le premier n'existe pas, le second sera trouvé, et ainsi de suite.

La page d'erreur ci-dessous est la page qui représente l'erreur. Nous ne l'utiliserons pas ici pour le moment, nous l'ignorerons donc pour l'instant.

Ensuite, nous connaissons la configuration spécifique, comment le faire passer à Tomcat lors de l'accès à localhost. En fait, seuls deux lieux ont été modifiés :

1 server_name localhost:8080;   
2   
3 location / {   
4     proxy_pass http://localhost:8080   
5 }
Copier après la connexion

Nous avons modifié les deux endroits ci-dessus. Mon Tomcat est sur le port 8080. Vous pouvez le modifier selon vos propres besoins. Il y a ici un nouvel élément proxy_pass, qui représente le chemin du proxy, ce qui équivaut à un transfert, contrairement à la racine qui doit être spécifiée auparavant.

Maintenant que nous avons modifié le fichier, cela signifie-t-il qu'il faut arrêter nginx puis le redémarrer ? En fait, ce n'est pas nécessaire, nginx peut recharger le fichier ?

On court directement :

Comment utiliser Tomcat avec Nginx

Il était trop tôt pour se réjouir, nous avons trouvé une erreur :

Comment utiliser Tomcat avec Nginx

Que s'est-il passé ? Une erreur a été trouvée à la ligne 45. Nous ne voulions pas trouver } sur cette ligne, nous avons donc regardé attentivement et avons constaté que le proxy_pass que nous avions ajouté était étrange. Il ne se terminait pas par un signe ; problème. Nous l’avons modifié directement, puis nous l’avons réexécuté. Nous avons constaté qu’il n’y avait pas d’erreur, OK.

Si vous ne souhaitez pas le charger directement, mais souhaitez simplement voir s'il y a un problème avec votre fichier de configuration, vous pouvez directement saisir :

Comment utiliser Tomcat avec Nginx

Cela vérifie le fichier de configuration pour les erreurs. Toutes nos modifications ci-dessous supposent que nous exécutons nginx -s reload pour recharger le fichier de configuration une fois la modification terminée.

Tout va bien, puis on rouvre http://localhost et on voit la page suivante :

Comment utiliser Tomcat avec Nginx

À ce moment-là, nous avons constaté qu'il ne s'agissait pas de la page d'accueil pour le moment, mais de la page de gestion de Tomcat. Quel que soit le lien sur lequel nous cliquons, il n'y aura aucun problème, ce qui équivaut à accéder directement à http://localhost:8080.

3) Ci-dessus, nous avons directement essayé un petit exemple pour laisser nginx avancer, ce qu'on appelle le proxy inverse. Mais en fait, nos besoins ne seront pas comme ça. Nous devons filtrer par type de fichier. Par exemple, jsp est directement traité par Tomcat, car nginx n'est pas un conteneur de servlet et ne peut pas traiter JSP, contrairement à HTML, JS et CSS. doit être traité Oui, mettez-le en cache directement dans nginx.

Configurons-le pour que la page JSP soit directement envoyée à Tomcat, et que certaines images et JS tels que HTML et PNG soient directement mises en cache par nginx.

À l'heure actuelle, la chose la plus importante à utiliser est l'élément de localisation, et cela implique quelques règles régulières, mais ce n'est pas difficile :

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 }
Copier après la connexion

Nous devons d'abord supprimer l'emplacement / précédemment configuré pour éviter que toutes les demandes ne soient interceptées.

Alors jetons un coup d'œil à http://localhost

Comment utiliser Tomcat avec Nginx

Lorsque nous ne spécifions pas la page jsp, elle ne sera pas trouvée car il n'y a pas de correspondance d'emplacement correspondante pour le moment, il y aura donc une erreur 404, puis elle passera à la page d'erreur personnalisée nginx.

Et lorsque nous utilisons http://localhost/index.jsp pour y accéder, nous voyons une page familière : Comment utiliser Tomcat avec Nginx

Et les images s'affichent normalement, car les images sont au format png, donc on les recherche directement dans le répertoire tomcat/webapps/ROOT. Bien sûr, si on clique sur le lien Manager Application HOW-TO, on trouve :

.                                                                              On ne le trouve toujours pas, pourquoi ? Parce que c'est une page HTML, mais elle ne se trouve pas dans le répertoire ROOT, mais dans le répertoire docs. Mais lorsque nous faisons correspondre le HTML, nous allons dans le répertoire ROOT pour le trouver, donc nous ne trouvons toujours pas la page. Comment utiliser Tomcat avec Nginx

Dans des circonstances normales, si nous devons utiliser nginx pour servir des fichiers statiques, nous mettrons généralement tous les fichiers statiques, html, htm, js, css, etc. dans le même dossier, afin qu'il n'y ait pas de situation telle que Tomcat Parce que. les fichiers Tomcat appartiennent à des projets différents, nous ne pouvons rien y faire.

3) Certaines personnes diront que ceux-ci ne trouveront qu'un seul serveur, mais que se passe-t-il si nous voulons trouver automatiquement un autre serveur lorsqu'un serveur raccroche ? Ceci est effectivement pris en compte par nginx.

À l’heure actuelle, le proxy_pass que nous utilisions auparavant sera d’une grande utilité.

Modifions le premier exemple précédent, c'est-à-dire tous les agents :

La dernière modification est la suivante :

 1 upstream local_tomcat {   
 2     server localhost:8080;   
 3 }   
 4   
 5 server{   
 6         location / {   
 7            proxy_pass http://local_tomcat;   
 8         }   
 9         #......其他省略   
10 }
Copier après la connexion
Nous avons ajouté un amont en dehors du serveur et l'avons utilisé directement dans proxy_pass en utilisant le nom http://+upstream.

我们还是直接来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 }
Copier après la connexion

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

Comment utiliser Tomcat avec Nginx

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

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

1 upstream local_tomcat {   
2     server localhost:8080 weight=1;   
3     server localhost:9999 weight=5;   
4 }
Copier après la connexion

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

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal