Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

WBOY
WBOYke hadapan
2023-05-21 19:01:041790semak imbas

1) Sudah tentu anda perlu memuat turun perisian yang ingin anda gunakan. Pergi ke laman web rasmi nginx untuk yang seterusnya. http://nginx.org/en/download.html boleh didapati di sini. Versi yang saya gunakan sekarang ialah 1.1.7, tetapi pada asasnya semua versi masa hadapan adalah serasi, dan apa yang kami gunakan tidak melibatkan aspek peringkat terlalu rendah, jadi tidak sepatutnya ada perubahan. Di sini, kerana saya adalah Windows, sudah tentu saya memuat turun versi Windows. Selepas memuat turun, anda perlu memulakannya terlebih dahulu. Masukkan folder nginx dan mulakan nginx secara langsung. Sebagai contoh, selepas memuat turun, saya meletakkannya dalam d:softwaredevelopertoolsservernginx-1.1.7, secara langsung cmd dan kemudian cd d:softwaredevelopertoolsservernginx-1.1.7 Sesetengah orang yang tidak biasa dengan baris arahan mungkin terkejut bahawa ia tidak pergi ke folder itu. Windows tidak akan melompat antara partition melainkan anda menentukannya sendiri. Jadi kita perlu terus d: seperti berikut:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Kemudian, kita mulakan nginx secara langsung Di sini anda mungkin melihat tetingkap kilat mengikut penggunaan tomcat kami Jika pengalaman itu berlalu dalam sekelip mata, ia membuktikan bahawa ada sesuatu yang tidak kena, bukan? Tetapi tidak.

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Pada masa ini kami membuka pengurus tugas dan kami dapat melihat dua nginx.exe di sana. Ini menunjukkan bahawa kami telah pun memulakannya, kami tidak akan mendalaminya di sini.

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Sekarang kita telah memulakan nginx, kita boleh mulakan tomcat. Fikirkan untuk mengakses terus http://localhost untuk mengakses tomcat secara langsung. Jangan risau, mari kita lihat rupa nginx selepas bermula. Mengakses terus http://localhost boleh melihat:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Kita dapat melihat bahawa nginx bermula dengan jayanya, dan kini akses terus ke dalam direktori nginx. Jadi di manakah ini sebenarnya dikonfigurasikan. Ini melibatkan nginx.conf, fail konfigurasi penting nginx.
2) Kami dapat melihat bahawa terdapat folder conf dalam folder nginx, yang mengandungi beberapa fail, tidak kira yang lain, kami membuka nginx.conf dan kami dapat melihat perenggan:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Kod ini ada dalam pelayan dan bersamaan dengan pelayan proksi Sudah tentu, berbilang boleh dikonfigurasikan. Mari kita menganalisisnya dengan teliti: dengar: Menunjukkan port yang didengari oleh pelayan proksi semasa Lalai adalah untuk mendengar port 80. Ambil perhatian bahawa jika kami mengkonfigurasi berbilang pelayan, pendengar mesti dikonfigurasikan secara berbeza, jika tidak, kami tidak akan dapat menentukan ke mana hendak pergi. server_name: Menunjukkan tempat untuk pergi selepas mendengar Pada masa ini, kami pergi terus ke kawasan setempat Pada masa ini, ia terus ke folder nginx. lokasi: Menunjukkan laluan yang sepadan Jika / dikonfigurasikan, ini bermakna semua permintaan akan dipadankan di sini: Jika akar dikonfigurasikan, ini bermakna apabila laluan permintaan ini dipadankan, fail yang sepadan akan ditemui dalam folder ini. . Di sini Ia akan berguna untuk penyajian fail statik kami kemudian. index: Apabila tiada halaman utama ditentukan, fail yang ditentukan akan dipilih secara lalai Terdapat berbilang fail dan ia akan dimuatkan mengikut urutan Jika yang pertama tidak wujud, yang kedua akan ditemui, dan seterusnya. Halaman_kesalahan di bawah ialah halaman yang mewakili ralat Kami tidak akan menggunakannya di sini buat masa ini, jadi kami akan mengabaikannya buat masa ini.
Kemudian kita tahu konfigurasi khusus, bagaimana untuk menjadikannya bertukar kepada tomcat apabila mengakses localhost. Sebenarnya, hanya dua tempat yang telah diubah suai:

server_name localhost:8080;  
location / {  proxy_pass http://localhost:8080}

Kami telah mengubah suai dua tempat di atas saya di port 8080. Anda boleh mengubah suai mengikut keperluan anda sendiri. Terdapat elemen proxy_pass baharu di sini, yang mewakili laluan proksi, yang bersamaan dengan pemajuan, tidak seperti akar yang mesti dinyatakan sebelum ini. Sekarang kita telah mengubah suai fail, adakah ini bermakna kita mesti menutup nginx dan kemudian memulakannya semula, sebenarnya, ia tidak perlu, nginx boleh memuat semula fail tersebut? Kami menjalankannya secara langsung: nginx -s reload
Kami gembira terlalu awal, kami mendapati ralat:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

Apa kejadahnya, ralat ditemui pada baris 45, Kami tidak mahu mencari } dalam baris itu, jadi kami mencari dengan teliti dan mendapati bahawa proxy_pass yang kami tambahkan itu tidak berakhir dengan tanda ; kemudian jalankannya semula. Kami mendapati bahawa tiada ralat dan ia adalah ok. Jika anda tidak mahu memuatkannya secara langsung, tetapi hanya ingin melihat jika terdapat sebarang masalah dengan fail konfigurasi anda, anda boleh terus memasukkan: nginx -t
Ini boleh menyemak sama ada terdapat ralat dalam fail konfigurasi. Semua pengubahsuaian kami di bawah menganggap bahawa kami menjalankan nginx -s reload untuk memuatkan semula fail konfigurasi selepas pengubahsuaian selesai.
Semuanya baik-baik saja, kemudian kami membuka semula http://localhost dan kami melihat halaman berikut:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

这时,我们发现它并不是刚才的welcome页面了,而是tomcat的管理页面了,不管我们点击什么链接都是没问题的,相当于直接访问http://localhost:8080一样。
3)上面我们直接试了一个小例子,让nginx进行转发,即所谓的反向代理。但实际上我们的需求不会是这样的,我们需要分文件类型来进行过滤,比如jsp直接给tomcat处理,因为nginx并不是servlet容器,没办法处理jsp,而html,js,css这些不需要处理的,直接给nginx进行缓存。下面我们来进行一下配置,让jsp页面直接给tomcat,而html,png等一些图片和js等直接给nginx进行缓存。这时最主要用的还是location这个元素,并且涉及到一部分正则,但不难:

location ~ .jsp$ {    proxy_pass http://localhost:8080;}  
location ~ .(html|js|css|png|gif)$ {  root d:/software/developertools/server/apache-tomcat-7.0.8/webapps/root;} 
location ~ .jsp$ {    proxy_pass http://localhost:8080;} 
location ~ .(html|js|css|png|gif)$ {  root d:/software/developertools/server/apache-tomcat-7.0.8/webapps/root;}

  我们先要去掉之前配的location /,避免全部请求被拦截了。然后我们再来看看http://localhost

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

当我们不指定jsp页面的时候,它会出现找不到,因为,此时并没有相应的location匹配,所以就会有404错误,这时就跳到了nginx自定义的error页面去了。而当我们用http://localhost/index.jsp去访问时,我们看到了熟悉的页面:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

而且图片那些都显示正常,因为图片是png的,所以直接在tomcat/webapps/root目录下直接查找,当然,如果我们点击manager application how-to这个链接,我们发现:

Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat

它还是找不到,为什么呢?因为这是个html页面,但它并不在root目录下,而是在docs目录下,但当我们匹配html时,我们却到root目录下去找,所以还是找不到这个页面。
一般情况下,如果我们需要用nginx来进行静态文件伺服,一般都会把所有静态文件,html,htm,js,css等都放在同一个文件夹下,这样就不会有tomcat这样的情况了,因为tomcat下的是属于不同的项目,这个我们就没办法了。
3)有些人会说,这些都只会找一台服务器,但如果我们想在一台服务器挂了的时候,自动去找另外一台,这怎么办?这实际上nginx都考虑到了。这时,我们之前用的proxy_pass就有大用途了。我们把之前的第一个例子,即全部都代理的修改一下:最后修改如下:

upstream local_tomcat {  server localhost:8080;}  
server{    location / {      proxy_pass http://local_tomcat;    }  
  ##......其他省略
}  
upstream local_tomcat {  server localhost:8080;} 
server{    location / {      proxy_pass http://local_tomcat;    } 
  #......其他省略
}

  我们在server外添加了一个upstream,而直接在proxy_pass里面直接用http://+upstream的名称来使用。我们还是直接来http://localhost,还是和第一个一样的效果,所有链接都没问题,说明我们配置正确。upstream中的server元素必须要注意,不能加http://,但proxy_pass中必须加。我们刚才说可以在一个服务器挂了的情况下连到另外一个,那怎么弄呢?其实很简单,在upstream中的local_tomcat中配置多一个server。比如我现在弄多一个jetty,端口在9999,所以我们配置如下:

upstream local_tomcat {  server localhost:8080;  server localhost:9999;}  
upstream local_tomcat {  server localhost:8080;  server localhost:9999;}

  此时,我们关闭tomcat,而只开jetty。我们来运行http://localhost看看效果:  我们看到它请求到了jetty的页面,但由于jetty的机制,这时没有显示jetty主页,这个我们先不管。但我们的在一个服务器挂的情况下自动使用另外一个的功能实现了。
但有时我们就不想它挂的时候访问另外一个,而只是希望一个服务器访问的机会比另外一个大,这个可以在server最后加上一个weight=数字来指定,数字越大,表明请求到的机会越大。 

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

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

Atas ialah kandungan terperinci Cara menggunakan Nginx sebagai proksi terbalik untuk pelayan Tomcat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam