modul proksi nginx
Nota: Terdapat banyak arahan untuk modul proksi saya hanya akan menerangkan proxy_pass yang penting di sini Jika anda ingin mengetahui arahan proksi lebih lanjut, sila rujuk dokumentasi rasmi Cina.
Modul ini boleh memajukan permintaan ke pelayan lain. http/1.0 tidak boleh menggunakan keepalives (pelayan bahagian belakang akan membuat dan memadam sambungan untuk setiap permintaan). nginx menghantar http/1.1 untuk penyemak imbas dan http/1.0 untuk pelayan bahagian belakang supaya penyemak imbas boleh mengendalikan keepalive untuk penyemak imbas.
Contoh berikut:
location / { proxy_pass http://localhost:8000; proxy_set_header x-real-ip $remote_addr; }
Perhatikan bahawa apabila menggunakan modul proksi http (atau pun fastcgi), nginx akan cache semua permintaan sambungan sebelum menghantarnya ke pelayan bahagian belakang, oleh itu, apabila mengukur data yang dihantar daripada data bahagian belakang, paparan kemajuannya mungkin tidak betul.
Topologi eksperimen:
7 Konfigurasikan proksi terbalik http
[root@nginx ~]# cd /etc/nginx/ [root@nginx nginx]# cp nginx.conf nginx.conf.bak #备份一个原配置文件 [root@nginx nginx]# vim nginx.conf location / { proxy_pass http://192.168.18.201; }
Penerangan arahan: proxy_pass
.
Sintaks: proxy_pass url
Nilai lalai: tidak
Gunakan medan: lokasi, jika medan di lokasi
Perintah ini menetapkan alamat pelayan proksi dan uri yang dipetakan Alamat boleh dalam bentuk nama hos atau nombor port ip tambah, contohnya: proxy_pass http://localhost:8000/uri/;
8. Muat semula fail konfigurasi
[root@nginx ~]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新载入 nginx: [确定]
9. Ujinya
Perhatikan, anda boleh melihat bahawa apabila kami mengakses 192.168.18.208, Dihalakan semula ke web1 melalui proksi.
10 Semak log pelayan web
[root@web1 ~]# tail /var/log/httpd/access_log 192.168.18.208 - - [04/sep/2013:00:14:20 +0800] "get /favicon.ico http/1.0" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:14:20 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:14:20 +0800] "get /favicon.ico http/1.0" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.138 - - [04/sep/2013:00:14:45 +0800] "get / http/1.1" 200 23 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.138 - - [04/sep/2013:00:14:48 +0800] "get /favicon.ico http/1.1" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:14:55 +0800] "get /favicon.ico http/1.0" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:15:05 +0800] "get /favicon.ico http/1.0" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:15:13 +0800] "get /favicon.ico http/1.0" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:15:16 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36" 192.168.18.208 - - [04/sep/2013:00:15:16 +0800] "get /favicon.ico http/1.0" 404 289 "-" "mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/28.0.1500.95 safari/537.36"
Perhatikan, anda boleh melihat bahawa semua IP pelanggan kami di sini adalah IP pelayan proksi nginx, bukan IP pelanggan sebenar. . Mari kita ubah suai supaya IP log memaparkan IP pelanggan sebenar.
11. Ubah suai fail konfigurasi nginx
location / { proxy_pass http://192.168.18.201; proxy_set_header x-real-ip $remote_addr; #加上这一行 }
Penerangan arahan: proxy_set_header
Sintaks: proxy_set_header nilai pengepala
<🎜 Nilai: hos dan sambungan
Medan terpakai: http, pelayan, lokasi
Arahan ini membenarkan pengepala permintaan yang dihantar ke pelayan proksi untuk ditakrifkan semula atau menambah beberapa medan. Nilai ini boleh menjadi teks, pembolehubah atau gabungannya. proxy_set_header akan diwarisi daripada medan induknya jika ia tidak ditakrifkan dalam medan yang ditentukan.
12. Muat semula fail konfigurasi
[root@nginx ~]# service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 重新载入 nginx: [确定]
13 Uji dan lihat log
[root@web1 ~]# tail /var/log/httpd/access_log 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.208 - - [03/sep/2013:16:26:18 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)"
Perhatikan, anda boleh melihat bahawa rekod log masih merupakan IP proksi. , IP pelanggan sebenar tidak dipaparkan, mengapa? Mari kita lihat pada fail konfigurasi httpd.
14 Lihat dan ubah suai fail konfigurasi httpd
[root@web1 ~]# vim /etc/httpd/conf/httpd.conf
Perhatikan, parameter yang anda boleh merekodkan log di sini masih %. h, di bawah Mari ubah suai parameter.
Perhatikan, ini ialah parameter yang diubah suai kepada %{x-real-ip}i.
15 Mulakan semula dan uji
[root@web1 ~]# service httpd restart 停止 httpd: [确定] 正在启动 httpd: [确定] [root@web1 ~]# tail /var/log/httpd/access_log 192.168.18.138 - - [03/sep/2013:17:09:14 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:14 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)" 192.168.18.138 - - [03/sep/2013:17:09:15 +0800] "get / http/1.0" 200 23 "-" "mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; wow64; trident/6.0)"
Perhatikan, anda boleh melihat bahawa alamat IP yang direkodkan dalam log adalah alamat pelanggan sebenar.
Atas ialah kandungan terperinci Cara menggunakan modul proksi nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!