Saya percaya ramai orang telah mendengar tentang nginx perkara kecil ini secara perlahan-lahan memakan bahagian apache dan IIS. Jadi apa sebenarnya yang dilakukannya? Mungkin ramai yang tidak memahaminya.
Bercakap tentang proksi terbalik, mungkin ramai yang pernah mendengarnya, tetapi mungkin ramai yang tidak tahu apa itu proksi terbalik. Ambil penerangan daripada Ensiklopedia Baidu:
Kaedah proksi terbalik merujuk kepada menggunakan pelayan proksi untuk menerima permintaan sambungan di Internet, kemudian memajukan permintaan ke pelayan pada rangkaian dalaman, dan mengembalikan hasil yang diperoleh daripada pelayan kepada klien yang meminta sambungan di Internet masa, pelayan proksi muncul sebagai pelayan kepada dunia luar.
Ia sangat mudah di sini. Kaedah proksi terbalik sebenarnya adalah pelayan proksi yang bertanggungjawab untuk pemajuan Nampaknya bertindak sebagai pelayan sebenar, tetapi sebenarnya tidak Pelayan proksi hanya bertindak sebagai penghantar dan mendapatkan data yang dikembalikan daripada pelayan sebenar. Dengan cara ini, nginx sebenarnya menyelesaikan kerja seperti ini. Kami membiarkan nginx mendengar port, seperti port 80, tetapi sebenarnya kami memajukannya ke tomcat pada port 8080, yang mengendalikan permintaan sebenar Apabila permintaan selesai, tomcat kembali, tetapi data tidak dikembalikan secara langsung pada masa ini , tetapi secara langsung Berikannya kepada nginx, dan nginx akan mengembalikannya Di sini, kita akan berfikir bahawa nginx sedang memprosesnya, tetapi sebenarnya ia adalah tomcat yang memprosesnya.
Bercakap tentang kaedah di atas, ramai orang mungkin memikirkannya semula, supaya fail statik boleh diproses oleh nginx. Ya, banyak tempat di mana nginx digunakan digunakan sebagai pelayan statik, yang boleh menyimpan fail statik dengan mudah, seperti CSS, JS, html, htm dan fail lain.
Tanpa berlengah lagi, mari kita lihat cara menggunakan nginx.
1) Sudah tentu anda perlu memuat turun perisian yang ingin anda gunakan. Pergi ke laman web rasmi nginx untuk yang seterusnya. 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:
Pada ketika ini kita membuka pengurus tugas dan kita boleh melihat dua nginx.exe di sana. Ini menunjukkan bahawa kami telah pun memulakannya, kami tidak akan mendalaminya di sini.
Pada ketika ini kami membuka pengurus tugas dan dapat melihat dua proses nginx.exe berjalan dengan baik di sana. Ini menunjukkan bahawa kami telah pun memulakannya, kami tidak akan mendalaminya di sini.
Sekarang kita telah memulakan nginx, kita boleh mulakan tomcat Jika kita ingin mengakses terus http://localhost, kita boleh terus mengakses tomcat.
Jangan risau, mari kita lihat rupa nginx selepas bermula. Akses terus http://localhost untuk melihat:
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 bahagian
.Kod ini ada dalam pelayan dan bersamaan dengan pelayan proksi Sudah tentu, berbilang boleh dikonfigurasikan.
Mari analisa dengan teliti:
dengar: Menunjukkan port yang didengari oleh pelayan proksi semasa Secara 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 Pada masa ini, / dikonfigurasikan untuk menunjukkan bahawa semua permintaan dipadankan di sini
. Root: Root dikonfigurasikan di dalamnya, yang bermaksud bahawa apabila laluan permintaan ini dipadankan, fail yang sepadan akan ditemui dalam folder ini. Ini sangat berguna untuk penyajian fail statik kami yang berikutnya.
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. Malah, hanya dua tempat yang telah diubah suai:
1 server_name localhost:8080; 2 3 location / { 4 proxy_pass http://localhost:8080 5 }
Kami telah mengubah suai dua tempat di atas saya pada 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 menjalankan terus:
Masih terlalu awal untuk bergembira, kami menemui ralat:
Apa yang berlaku? Ralat ditemui pada baris 45. Kami tidak mahu mencari } pada baris itu, jadi kami melihat dengan teliti dan mendapati bahawa proxy_pass yang kami tambahkan itu tidak berakhir dengan tanda masalah. Kami mengubah suainya secara langsung dan kemudian menjalankannya semula Kami mendapati tiada Ralat, OK.
Jika anda tidak mahu memuatkannya secara langsung, tetapi hanya ingin melihat jika terdapat sebarang masalah dengan fail konfigurasi anda, anda boleh terus memasukkan:
Ini menyemak fail konfigurasi untuk ralat. 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:
Pada masa ini, kami mendapati bahawa ia bukan halaman selamat datang sebentar tadi, tetapi halaman pengurusan kucing jantan Tidak kira pautan yang kami klik, tidak akan ada masalah, yang setara dengan mengakses terus http://localhost:8080.
3) Di atas kami terus mencuba contoh kecil untuk membiarkan nginx ke hadapan, iaitu proksi terbalik yang dipanggil. Tetapi sebenarnya keperluan kita tidak akan seperti ini Kita perlu menapis mengikut jenis fail Sebagai contoh, jsp diproses secara langsung oleh tomcat, kerana nginx bukan bekas servlet dan tidak boleh memproses JSP, manakala html, js, dan css tidak. perlu diproses Ya, cache terus ke nginx.
Mari konfigurasikannya supaya halaman JSP dihantar terus ke tomcat, dan beberapa gambar dan JS seperti html dan png terus dicache oleh nginx.
Pada masa ini, perkara paling penting untuk digunakan ialah elemen lokasi, dan ia melibatkan beberapa peraturan biasa, tetapi ia tidak sukar:
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 }
Mula-mula kami perlu mengalih keluar lokasi yang dikonfigurasikan sebelum ini / untuk mengelakkan semua permintaan daripada dipintas.
Kemudian mari kita lihat http://localhost
Apabila kami tidak menentukan halaman jsp, ia tidak akan ditemui kerana tiada padanan lokasi yang sepadan pada masa ini, jadi akan terdapat ralat 404, dan kemudian ia akan melompat ke halaman ralat tersuai nginx.
Dan apabila kami menggunakan http://localhost/index.jsp untuk melawat, kami melihat halaman biasa:
Dan gambar-gambar itu dipaparkan seperti biasa, kerana gambar-gambar itu png, jadi kami terus mencarinya dalam direktori tomcat/webapps/ROOT Sudah tentu, jika kami mengklik pautan CARA-CARA Aplikasi Pengurus, kami dapati:
Ia masih tidak dapat ditemui, mengapa? Kerana ini adalah halaman html, tetapi ia bukan dalam direktori ROOT, tetapi dalam direktori dokumen Tetapi apabila kami memadankan html, kami pergi ke direktori ROOT untuk mencarinya, jadi kami masih tidak dapat mencari halaman itu.Dalam keadaan biasa, jika kita perlu menggunakan nginx untuk menyampaikan fail statik, kita biasanya akan meletakkan semua fail statik, html, htm, js, css, dan lain-lain dalam folder yang sama, supaya tidak akan ada situasi seperti tomcat yang di bawah tomcat tergolong dalam projek yang berbeza, tiada apa yang boleh kami lakukan mengenai perkara ini.
3) Sesetengah orang akan mengatakan bahawa ini hanya akan mencari satu pelayan, tetapi bagaimana jika kita mahu mencari pelayan lain secara automatik apabila satu pelayan ditutup? Ini sebenarnya diambil kira oleh nginx.
Pada masa ini, proxy_pass yang kami gunakan sebelum ini akan sangat berguna.
Mari kita ubah suai contoh pertama sebelum ini, iaitu semua ejen:
Pengubahsuaian akhir adalah seperti berikut:
1 upstream local_tomcat { 2 server localhost:8080; 3 } 4 5 server{ 6 location / { 7 proxy_pass http://local_tomcat; 8 } 9 #......其他省略 10 }
Kami menambahkan huluan di luar pelayan dan menggunakannya terus dalam proxy_pass menggunakan nama 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 }
此时,我们关闭tomcat,而只开jetty。我们来运行http://localhost看看效果:
我们看到它请求到了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就可以关闭了。
Atas ialah kandungan terperinci Cara menggunakan tomcat dengan nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!