狂吧 发表于 2023-10-13 21:46:03

Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置

Nginx修改演示:

vim /usr/local/nginx/conf/vhost/example.com

server{
        listen 80;
        server_name 192.168.1.180;

        location / {
                root /Code/project/public;
                index index.php index.html;
                include /usr/local/nginx/conf/rewrite/laravel.conf;

      location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_indexindex.php;
            fastcgi_paramSCRIPT_FILENAME $document_root/$fastcgi_script_name;
            include      /usr/local/nginx/conf/fastcgi_params;
      }
        }

#由此处开始,是配置一段自定义的配置,如果访问站点192.168.1.180/test下的路径,会执行下方的配置-------------------------------
        location /test {
                root /Code/project/public;
                index index.php index.html;

      location ~ \.php$ {
            #注意此处配置的端口,不同的项目要使用不同的sock文件,或者IP:Port
            fastcgi_pass   127.0.0.1:9001;
            fastcgi_indexindex.php;
            fastcgi_paramSCRIPT_FILENAME $document_root/$fastcgi_script_name;
            include      /usr/local/nginx/conf/fastcgi_params;

                        #一些自定义的配置
            fastcgi_connect_timeout 999999;
            fastcgi_read_timeout 999999;
            fastcgi_send_timeout 999999;
      }
    }
}

#保存后检测是否有配置错误
../../sbin/nginx -t
#nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
#nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#确认无误后重启
service nginx restartPHP-FPM修改演示(推荐配置成功后再配置Nginx):

vim /usr/local/php/etc/php-fpm.conf


pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice


listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 32
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 256
pm.process_idle_timeout = 5s


#配置自定义进程参数-------------------------------------------------------------------------
#起一个名字

#此处必须使用不同的端口区分上方的www配置
listen = 127.0.0.1:9001
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 32
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 256
pm.process_idle_timeout = 5s
request_terminate_timeout = 999999

#保存后重启
service php-fpm restart

#查看进程,有test和www
ps aux | grep php
root      155970.00.4 1799128328 ?      Ss   10月12   0:03 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www       155980.00.9 188668 17688 ?      S    10月12   0:04 php-fpm: pool www
www       155990.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       156000.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       156010.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       156050.00.4 1819568052 ?      S    10月12   0:00 php-fpm: pool test
www       158030.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       158110.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       158540.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       158550.00.4 1819569232 ?      S    10月12   0:03 php-fpm: pool www
www       159410.00.4 1819569232 ?      S    10月12   0:00 php-fpm: pool www
www       159420.00.4 1819568052 ?      S    10月12   0:00 php-fpm: pool www
www       162410.00.4 1819568044 ?      S    10月12   0:00 php-fpm: pool www
www       162420.00.4 1819568056 ?      S    10月12   0:00 php-fpm: pool test
www       163000.00.4 1819568056 ?      S    10月12   0:00 php-fpm: pool www
www       163010.00.4 1819568056 ?      S    10月12   0:00 php-fpm: pool test
www       164180.00.4 1819568052 ?      S    10月12   0:00 php-fpm: pool test
www       166350.00.4 1819568052 ?      S    10月12   0:00 php-fpm: pool test
www       280590.00.4 1819568056 ?      S    08:29   0:00 php-fpm: pool www
www       283020.00.4 1819568052 ?      S    08:51   0:00 php-fpm: pool test
root      286940.00.0 112728   984 pts/0    S+   09:13   0:00 grep --color=auto php

#查看网络相关,一个9000,一个9001就说明配置正常
netstat -nlp | grep php
tcp      0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      15597/php-fpm: mast
tcp      0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      15597/php-fpm: mastNginx与PHP-FPM两种通信方式:

1. Tcp默认的9000端口通信:


[*]php-fpm配置:listen = 127.0.0.1
[*]与nginx进程通信:fastcgi_pass127.0.0.1:9000;
[*]优点:

[*]使用网络传输,可以跨服务器。
[*]TCP通信有一些校验机制,具有更高的稳定性。

[*]缺点:

[*]性能略微比socket差。

2.Unix Socket(套接字)通信:


[*]php-fpm配置 :listen = /tmp/php-cgi.sock
[*]与nginx进程通信:fastcgi_passunix:/tmp/php-cgi.sock;
[*]优点:

[*]不使用网络协议,所以不需要走网络协议的各种处理,相对于TCP略微减少通信开销。
[*]适合单机部署。

[*]缺点:

[*]使用文件传输,不支持跨服务器。
[*]大量请求时不稳定。
[*]sock是一个文件,容易忽略掉权限不足的问题,增加运维成本。

为什么 TCP比Unix Socket更稳定?

容错和重传机制:TCP 提供了许多容错和重传机制,以确保数据的可靠传输。它使用序号、确认和重传机制来检测和纠正传输中的错误,可以重新发送丢失的数据包,保证数据的完整性。而 Unix 域套接字没有内置的容错和重传机制。

来源:https://www.cnblogs.com/phpphp/p/17761795.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置