Penyepaduan PHP dan Nginx untuk mencapai proksi terbalik dan pengimbangan beban

王林
Lepaskan: 2023-06-25 10:10:01
asal
1134 orang telah melayarinya

PHP dan Nginx ialah dua alat berkuasa yang digunakan secara meluas dalam bidang pembangunan web. Ia boleh digunakan untuk menyokong pengaturcaraan bahasa PHP dan menyediakan pelayan Web yang pantas dan cekap masing-masing. Walau bagaimanapun, menggunakan PHP dan Nginx bersama-sama boleh mencapai fungsi yang lebih berkuasa, seperti proksi terbalik dan pengimbangan beban. Artikel ini akan membincangkan integrasi PHP dan Nginx secara terperinci untuk mencapai perkhidmatan web yang lebih berkuasa.

1. Proksi songsang

Dalam pelayan proksi konvensional, pelanggan meminta sumber daripada pelayan proksi, dan pelayan proksi memajukan permintaan ke pelayan sebenar, dan kemudian mengembalikan hasilnya kepada pelanggan. Pelayan proksi terbalik bertindak sebagai perantara antara klien dan pelayan sebenar Pelanggan memulakan permintaan kepada pelayan proksi terbalik, dan pelayan proksi terbalik mengarahkan permintaan ke pelayan sebenar dan mengembalikan hasilnya kepada klien. Kelebihan pendekatan ini ialah untuk pelanggan, mereka tidak perlu menyedari kewujudan pelayan sebenar kerana semua permintaan dan respons melalui pelayan proksi terbalik.

Kita boleh menggunakan Nginx untuk melaksanakan proksi terbalik. Nginx menyediakan arahan proxy_pass untuk memajukan permintaan ke pelayan sebenar bahagian belakang. Berikut ialah contoh konfigurasi proksi terbalik yang mudah:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Salin selepas log masuk

Konfigurasi ini akan memajukan semua permintaan ke pelayan backend http://backend_server, dan menukar Hos, X-Real-IP dan X-Forwarded dalam pengepala permintaan -Untuk medan ditetapkan kepada nilai yang sepadan. Dengan cara ini pelayan bahagian belakang boleh mengendalikan permintaan ini dengan betul.

2. Pengimbangan beban

Di tapak web dengan volum trafik yang tinggi, titik akhir perkhidmatan yang sama mungkin diminta oleh berbilang pelanggan pada masa yang sama, yang akan menyebabkan titik akhir perkhidmatan menjadi lebih muatan dan membawa kepada penurunan prestasi. Untuk mengelakkan keadaan ini, kita boleh menggunakan penyelesaian pengimbangan beban. Idea pengimbangan beban adalah untuk membentuk berbilang titik akhir perkhidmatan menjadi keseluruhan, dan menggunakan algoritma tertentu untuk mengagihkan permintaan secara sama rata kepada setiap titik akhir perkhidmatan, dengan itu mengelakkan situasi di mana titik akhir perkhidmatan tertentu terlebih beban.

Dalam Nginx, anda boleh menggunakan modul huluan untuk mencapai pengimbangan beban. Modul huluan menyediakan blok yang mewakili pelayan bahagian belakang dan mentakrifkan alamat dan parameter lain bagi titik akhir perkhidmatan individu. Berikut ialah contoh pengimbangan beban berdasarkan algoritma round-robin:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
Salin selepas log masuk

Dalam konfigurasi ini, blok huluan mentakrifkan tiga titik akhir perkhidmatan backend1.example.com, backend2.example.com dan backend3.example.com, dan tiada beban adalah algoritma Pengimbangan yang ditentukan, algoritma pengundian digunakan secara lalai. Dalam blok pelayan, semua permintaan akan dimajukan ke setiap titik akhir perkhidmatan dalam kumpulan hujung belakang huluan, dan medan Hos, X-Real-IP dan X-Forwarded-For dalam pengepala permintaan akan ditetapkan dengan betul.

3 Integrasi PHP

Terdapat banyak cara untuk menyepadukan PHP dan Nginx, dan cara paling mudah ialah menggunakan FastCGI. FastCGI ialah versi CGI yang dinaik taraf yang menggunakan sambungan panjang untuk menghantar data dan mempunyai prestasi yang lebih cekap. Dalam Nginx, kita boleh menggunakan protokol FastCGI untuk menyambungkan penterjemah PHP dan pelayan web.

Berikut ialah contoh konfigurasi Nginx ringkas yang menunjukkan cara mengintegrasikan PHP dan Nginx:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        # PHP configuration
        location ~ .php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # Reverse proxy configuration
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
Salin selepas log masuk

Dalam konfigurasi ini, kami memajukan semua permintaan yang berakhir dengan .php ke proses FastCGI, yang kemudiannya memajukan permintaan ke titik akhir Perkhidmatan bahagian belakang. Menggunakan protokol FastCGI boleh menjadikan kod PHP kami berinteraksi dengan Nginx dengan lebih cekap.

Di atas adalah kandungan asas integrasi PHP dan Nginx untuk mencapai proksi terbalik dan pengimbangan beban. Melalui fungsi ini, kami boleh mencapai perkhidmatan Web yang lebih cekap, boleh dipercayai dan selamat. Jika anda sedang bersedia untuk membangunkan tapak web atau aplikasi dengan trafik tinggi, pertimbangkan untuk menggunakan penyepaduan PHP dan Nginx untuk prestasi dan kebolehskalaan yang lebih baik.

Atas ialah kandungan terperinci Penyepaduan PHP dan Nginx untuk mencapai proksi terbalik dan pengimbangan beban. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan