翼度科技»论坛 编程开发 PHP 查看内容

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

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
Nginx修改演示:
  1. vim /usr/local/nginx/conf/vhost/example.com
  2. server{
  3.         listen 80;
  4.         server_name 192.168.1.180;
  5.         location / {
  6.                 root /Code/project/public;
  7.                 index index.php index.html;
  8.                 include /usr/local/nginx/conf/rewrite/laravel.conf;
  9.         location ~ \.php$ {
  10.             fastcgi_pass   127.0.0.1:9000;
  11.             fastcgi_index  index.php;
  12.             fastcgi_param  SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  13.             include        /usr/local/nginx/conf/fastcgi_params;
  14.         }
  15.         }
  16. #由此处开始,是配置一段自定义的配置,如果访问站点192.168.1.180/test下的路径,会执行下方的配置-------------------------------
  17.         location /test {
  18.                 root /Code/project/public;
  19.                 index index.php index.html;
  20.         location ~ \.php$ {
  21.             #注意此处配置的端口,不同的项目要使用不同的sock文件,或者IP:Port
  22.             fastcgi_pass   127.0.0.1:9001;
  23.             fastcgi_index  index.php;
  24.             fastcgi_param  SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  25.             include        /usr/local/nginx/conf/fastcgi_params;
  26.                         #一些自定义的配置
  27.             fastcgi_connect_timeout 999999;
  28.             fastcgi_read_timeout 999999;
  29.             fastcgi_send_timeout 999999;
  30.         }
  31.     }
  32. }
  33. #保存后检测是否有配置错误
  34. ../../sbin/nginx -t
  35. #nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  36. #nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  37. #确认无误后重启
  38. service nginx restart
复制代码
PHP-FPM修改演示(推荐配置成功后再配置Nginx):
  1. vim /usr/local/php/etc/php-fpm.conf
  2. [global]
  3. pid = /usr/local/php/var/run/php-fpm.pid
  4. error_log = /usr/local/php/var/log/php-fpm.log
  5. log_level = notice
  6. [www]
  7. listen = 127.0.0.1:9000
  8. listen.backlog = -1
  9. listen.allowed_clients = 127.0.0.1
  10. listen.owner = www
  11. listen.group = www
  12. listen.mode = 0666
  13. user = www
  14. group = www
  15. pm = dynamic
  16. pm.max_children = 32
  17. pm.start_servers = 4
  18. pm.min_spare_servers = 4
  19. pm.max_spare_servers = 8
  20. pm.max_requests = 256
  21. pm.process_idle_timeout = 5s
  22. #配置自定义进程参数-------------------------------------------------------------------------
  23. #起一个名字
  24. [test]
  25. #此处必须使用不同的端口区分上方的www配置
  26. listen = 127.0.0.1:9001
  27. listen.backlog = -1
  28. listen.allowed_clients = 127.0.0.1
  29. listen.owner = www
  30. listen.group = www
  31. listen.mode = 0666
  32. user = www
  33. group = www
  34. pm = dynamic
  35. pm.max_children = 32
  36. pm.start_servers = 4
  37. pm.min_spare_servers = 4
  38. pm.max_spare_servers = 8
  39. pm.max_requests = 256
  40. pm.process_idle_timeout = 5s
  41. request_terminate_timeout = 999999
  42. #保存后重启
  43. service php-fpm restart
  44. #查看进程,有test和www
  45. ps aux | grep php
  46. root      15597  0.0  0.4 179912  8328 ?        Ss   10月12   0:03 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
  47. www       15598  0.0  0.9 188668 17688 ?        S    10月12   0:04 php-fpm: pool www
  48. www       15599  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  49. www       15600  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  50. www       15601  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  51. www       15605  0.0  0.4 181956  8052 ?        S    10月12   0:00 php-fpm: pool test
  52. www       15803  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  53. www       15811  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  54. www       15854  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  55. www       15855  0.0  0.4 181956  9232 ?        S    10月12   0:03 php-fpm: pool www
  56. www       15941  0.0  0.4 181956  9232 ?        S    10月12   0:00 php-fpm: pool www
  57. www       15942  0.0  0.4 181956  8052 ?        S    10月12   0:00 php-fpm: pool www
  58. www       16241  0.0  0.4 181956  8044 ?        S    10月12   0:00 php-fpm: pool www
  59. www       16242  0.0  0.4 181956  8056 ?        S    10月12   0:00 php-fpm: pool test
  60. www       16300  0.0  0.4 181956  8056 ?        S    10月12   0:00 php-fpm: pool www
  61. www       16301  0.0  0.4 181956  8056 ?        S    10月12   0:00 php-fpm: pool test
  62. www       16418  0.0  0.4 181956  8052 ?        S    10月12   0:00 php-fpm: pool test
  63. www       16635  0.0  0.4 181956  8052 ?        S    10月12   0:00 php-fpm: pool test
  64. www       28059  0.0  0.4 181956  8056 ?        S    08:29   0:00 php-fpm: pool www
  65. www       28302  0.0  0.4 181956  8052 ?        S    08:51   0:00 php-fpm: pool test
  66. root      28694  0.0  0.0 112728   984 pts/0    S+   09:13   0:00 grep --color=auto php
  67. #查看网络相关,一个9000,一个9001就说明配置正常
  68. netstat -nlp | grep php
  69. tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      15597/php-fpm: mast
  70. tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      15597/php-fpm: mast
复制代码
Nginx与PHP-FPM两种通信方式:

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


  • php-fpm配置:listen = 127.0.0.1
  • 与nginx进程通信:fastcgi_pass  127.0.0.1:9000;
  • 优点:

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

  • 缺点:

    • 性能略微比socket差。

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


  • php-fpm配置 :listen = /tmp/php-cgi.sock
  • 与nginx进程通信:fastcgi_pass  unix:/tmp/php-cgi.sock;
  • 优点:

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

  • 缺点:

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

为什么 TCP比Unix Socket更稳定?

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

来源:https://www.cnblogs.com/phpphp/p/17761795.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具