Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan projek php di bawah nginx

Bagaimana untuk menggunakan projek php di bawah nginx

藏色散人
藏色散人asal
2021-09-24 09:38:2118736semak imbas

Cara untuk menggunakan projek PHP di bawah nginx: 1. Pasang nginx dan php-fpm 2. Cari fail konfigurasi pelayan nginx 3. Tentukan lokasi penggunaan projek PHP; pelbagai Hanya letakkan conf pelayan dalam didayakan tapak.

Bagaimana untuk menggunakan projek php di bawah nginx

Persekitaran pengendalian artikel ini: sistem linux5.9.8, nginx versi 1.9, komputer Dell G3.

Bagaimana untuk menggunakan projek php di bawah nginx?

Sebarkan projek php pada pelayan nginx

nginx sendiri tidak boleh memproses halaman PHP, ia hanyalah pelayan web apabila permintaan diterima, jika ia adalah permintaan PHP , dimajukan kepada penterjemah PHP untuk diproses melalui proksi terbalik, dan hasilnya dikembalikan kepada klien. Oleh itu nginx dan php-fpm atau penterjemah php lain perlu dipasang pada pelayan.

Selepas memasang nginx dan php-fpm, cari fail konfigurasi pelayan nginx

[root@test24266conf]# ps -ef | grep nginx.conf
root     31441    1  0  2018 ?       00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c/usr/local/nginx/conf/nginx.conf

Dalam fail ini, nyatakan lokasi penempatan projek php, iaitu, ubah suai akar dinyatakan di bawah medan pelayan Direktori akar fail.

Dalam banyak versi, tiada medan pelayan dalam nginx.conf Ini adalah untuk kemudahan pengurusan Dalam versi yang telah dikompilasi beberapa pengedaran, terdapat dua ayat termasuk conf.d di hujung http bahagian dalam nginx.conf. /*.conf; sertakan yang didayakan tapak/*atau hanya satu sertakan

didayakan tapak/*.conf; seperti

[root@test24266conf]# ll sites-enabled/
-rw-r--r--1 root root 603 103 2017 captcha443.conf
-rw-r--r--1 root root 287 9 1 2017 commrisk.conf
-rw-r--r--1 root root 194 129 2016 imagerotate.conf
-rw-r--r--1 root root 402 9 2 2016 msgqapi.conf
-rw-r--r--1 root root 295 102 2017 pointriskapi.conf
-rw-r--r--1 root root 290 6 2 2017 risktrade.conf
-rw-r--r--1 root root 309 814 2017 rotateapi.conf
-rw-r--r--1 root root 313 100 2016 watchdog.conf
[root@test24266conf]#
       这样每个.conf文件就可以对应一个虚拟主机,查看某个配置文件,如
[root@test24266conf]# cat sites-enabled/pointriskapi.conf
server{
    listen     8013;
    server_name     point.risk.api;
    index index.php;               #默认访问的文件
    root       /var/www/pointriskapi/hosts;
    access_log on;
#当请求网站下php文件的时候,反向代理到php-fpm
    location ~ .*\.php?$ {
       include fastcgi.conf;
    }
 
   location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
 
}
[root@test24266conf]#

Kami meletakkan fail projek php dalam laluan /var/www/pointriskapi/hosts ini Sebagai contoh,

[root@test24266hosts]# ll
 
 -rw-r--r-- 1 apache apache 339 102 2017risk_point.php
[root@test24266hosts]# pwd
/var/www/pointriskapi/hosts

secara amnya tidak perlu dimulakan semula Nginx dan php-fpm . Kini anda boleh mengakses http://ip:8013/risk_point.php pada klien.

Jadi bagaimanakah nginx memajukan permintaan kepada penterjemah PHP melalui proksi terbalik? Kami mendapati terdapat perenggan

    location ~ .*\.php?$ {
       include fastcgi.conf;          #加载nginx的fastcgi模块
    }

dalam medan pelayan Perenggan ini menentukan siapa yang memproses fail .php. Kami menyemak fail factcgi.conf dalam direktori yang sama seperti nginx.conf, seperti

[root@test24266 conf]# cat fastcgi.conf
fastcgi_pass  127.0.0.1:9000;
#fastcgi_pass  unix:/tmp/phpcgi.socket;
fastcgi_indexindex.php;
 
access_log  /var/log/httpd/access_log main;
 
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
 
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;
 
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
 
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
 
# PHPonly, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
[root@test24266conf]#

Fastcgi_pass menentukan alamat IP dan port yang didengari oleh proses fastcgi, iaitu, nginx akan memajukan permintaan itu soket ini. Oleh itu, kita perlu menentukan soket yang sama dalam fail konfigurasi php-fpm. Mulakan pemantauan dan lihat Php-fpm

[root@test24266~]# netstat -anp | grep 9000
tcp        0     0 127.0.0.1:9000             0.0.0.0:*                  LISTEN      3719/php-fpm

Untuk meringkaskan, dalam mod nginx dan php-fpm, proses permintaan dan respons yang lengkap adalah seperti berikut:

1 Fail .php tertentu

2. Nginx mendapati bahawa sumber dinamik perlu dihalakan ke direktori akar yang ditentukan

3 Muatkan modul fast-cgi nginx

4. Fakta- cgi memantau 127.0.0.1:9000 (soket lalai)

5. php-fpm menerima permintaan dan membolehkan proses pekerja memproses permintaan

6 dan mengembalikannya kepada nginx

7 nginx mengembalikan hasil ke penyemak imbas melalui http

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Bagaimana untuk menggunakan projek php di bawah nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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