从零开始学习云计算:第四章 Nginx 4.2 安装与虚拟主机2
发布时间:2022-12-09 10:49:21 所属栏目:PHP教程 来源:
导读: 3、 基于端口的虚拟主机
应用场景: 没有多余服务器,也没有多余IP地址,也没有多余域名 考虑基于端口的虚拟主机 tcp 端口 65535/ip (用户体验不好,访问的时候除了默认端口意外的端口都要手动输入)
应用场景: 没有多余服务器,也没有多余IP地址,也没有多余域名 考虑基于端口的虚拟主机 tcp 端口 65535/ip (用户体验不好,访问的时候除了默认端口意外的端口都要手动输入)
|
3、 基于端口的虚拟主机 应用场景: 没有多余服务器,也没有多余IP地址,也没有多余域名 考虑基于端口的虚拟主机 tcp 端口 65535/ip (用户体验不好,访问的时候除了默认端口意外的端口都要手动输入) 1、修改配置文件 server { listen 80; server_name ; root /usr/local/nginx/html/web1; access_log /var/log/nginx/web1/www.qfedu01.com.log main; error_log /var/log/nginx/web1/www.qfedu01.com.error.log; location / { index index.html index.htm; } } server { listen 8080; server_name ; root /usr/local/nginx/html/web2; access_log /var/log/nginx/web2/www.qfedu02.com.log main; error_log /var/log/nginx/web2/www.qfedu02.com.error.log; location / { index index.html index.htm; } } 2、重新 reload nginx进程 [root@qfedu.com ~]# nginx -s reload 或者 [root@qfedu.com ~]# systemctl restart nginx.service 3、 测试访问 浏览器输入: 浏览器输入::8080 七、Nginx 虚拟主机 + PHP-FPM PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器。它提供了更好的 PHP 进程管理方式,可以有效控制内存和进程、可以平滑重载 PHP 配置。在日常运维中,我们主要将 PHP-FPM 的配置文件分为主配置文件和 pool 配置文件(每个pool 配置文件通常对应一个 Nginx 虚拟主机)。 1、PHP-FPM 安装 [root@qfedu.com ~]# yum -y install php-fpm 2、PHP-FPM 主配置文件 主配置文件 php-fpm.confphp主机,常用配置如下: [root@qfedu.com ~]# vim /etc/php-fpm.conf [global] pid = /run/php-fpm/php-fpm.pid error_log = /var/log/php-fpm/error.log process_control_timeout = 0 ; 设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0. ; 加载 pool 配置 include = /etc/php-fpm.d/*.conf 3、PHP-FPM pool 配置文件 [root@qfedu.com ~]# vim /etc/php-fpm.d/test.qfedu.com.conf.conf [test.qfedu.com] user = nginx group = nginx ; 启动进程的帐户和组 listen = 127.0.0.1:9000 ; 允许监听的客户端 listen.allowed_clients = 127.0.0.1 ; 设置动态进程池 pm = dynamic pm.max_children = 512 pm.start_servers = 32 pm.min_spare_servers = 32 pm.max_spare_servers = 64 ; 设置每个进程可处理的请求数,当进程达到这个请求数量后会自动释放在重新生成新的进程。避免内存泄漏等情况 pm.max_requests = 1500 ; FPM 的监控设置 pm.status_path = /qfedu_monitor_page ; PHP-FPM 的慢请求日志位置。$pool 这里为 test.qfedu.com slowlog = /var/log/php-fpm/$pool-slow_log ; 设置请求时间达到多少位慢请求 request_slowlog_timeout = 3 ; 终止请求超时时间。一个请求若处理大于20s ,则会自动kill 掉。避免进程堆积 request_terminate_timeout = 20 catch_workers_output = no ; 限制 FPM 允许解析的脚本扩展名. 这里不限制,FPM可以解析任何扩展名的文件 security.limit_extensions = "" 4、虚拟主机结合PHP-FPM pool1、PHP-FPM pool 配置 [root@qfedu.com ~]# vim /etc/php-fpm.d/test.qfedu.com.conf [test.qfedu.com] php主机_主机屋免费空间能安装php源码程序吗_php主机管理系统 user = nginx group = nginx listen = 127.0.0.1:9000 listen.allowed_clients = 127.0.0.1 pm = dynamic pm.max_children = 512 pm.start_servers = 32 pm.min_spare_servers = 32 pm.max_spare_servers = 64 pm.max_requests = 1500 pm.status_path = /qfedu_monitor_page slowlog = /var/log/php-fpm/$pool-slow_log request_slowlog_timeout = 3 request_terminate_timeout = 20 catch_workers_output = no security.limit_extensions = "" [root@qfedu.com ~]# mv /etc/php-fpm.d/www.conf{,.bak} 2、虚拟主机配置 server { listen 80; server_name test.qfedu.com; root /usr/local/nginx/html/test.qfedu.com; access_log /var/log/nginx/test.qfedu.com-acess.log; error_log /var/log/nginx/test.qfedu.com-error.log; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html)$ { # 静态资源匹配 expires 1d; # 设置浏览器的缓存有效时间 } location / { include /etc/nginx/fastcgi_params; # yum 安装方式 # include fastcgi.conf; # 编译安装用 fastcgi.conf 注意配置文件路径 fastcgi_pass 127.0.0.1:9000; # 使用了PHP-FPM 9000 端口的POOL 配置。 } } 3、fastcgi 作用4、面是fastcgi_params解释 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件请求的路径,当访问127.0.0.1/index.php的时候,需要读取网站根目录下面的index.php文件,如果没有配置这一配置项时,nginx不回去网站根目录下访问.php文件,所以返回空白,所以这一项必须要具备 fastcgi_param QUERY_STRING $query_string; #请求的参数;如?app=123 fastcgi_param REQUEST_METHOD $request_method; #请求的动作(GET,POST) fastcgi_param CONTENT_TYPE $content_type; #请求头中的Content-Type字段 fastcgi_param CONTENT_LENGTH $content_length; #请求头中的Content-length字段。 fastcgi_param SCRIPT_NAME $fastcgi_script_name; #脚本名称 fastcgi_param REQUEST_URI $request_uri; #请求的地址不带参数 fastcgi_param DOCUMENT_URI $document_uri; #与$uri相同。 fastcgi_param DOCUMENT_ROOT $document_root; #网站的根目录。在server配置中root指令中指定的值 fastcgi_param SERVER_PROTOCOL $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 fastcgi_param GATEWAY_INTERFACE CGI/1.1; #cgi 版本 fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx 版本号,可修改、隐藏 fastcgi_param REMOTE_ADDR $remote_addr; #客户端IP fastcgi_param REMOTE_PORT $remote_port; #客户端端口 fastcgi_param SERVER_ADDR $server_addr; #服务器IP地址 fastcgi_param SERVER_PORT $server_port; #服务器端口 fastcgi_param SERVER_NAME $server_name; #服务器名,域名在server配置中指定的server_name fastcgi_param PATH_INFO $path_info; #可自定义变量 -- PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; 5、访问测试 [root@qfedu.com ~]# cat /usr/local/nginx/html/test.qfedu.com/today.php [root@qfedu.com ~]# curl -H "HOST: test.qfedu.com" 6、nginx与php-fpm的结合完整的流程 test.qfedu.com | | 请求 Nginx 中的php文件 | | 路由到 test.qfedu.com/index.php | | 加载 nginx 的 fast-cgi 模块 | | fast-cgi监听127.0.0.1:9000地址 | | test.qfedu.com/index.php 请求到达 127.0.0.1:9000 | | php主机_主机屋免费空间能安装php源码程序吗_php主机管理系统 php-fpm 监听 127.0.0.1:9000 | | php-fpm 接收到请求,启用 worker 进程处理请求 | | php-fpm 处理完请求,返回给 nginx | | nginx 将结果通过 http 返回给浏览器 7、开启PHP-FPM pool 监控 vpm.status_path = /qfedu_monitor_page server { listen 80; server_name test.qfedu.com; root /usr/local/nginx/html/test.qfedu.com; access_log /var/log/nginx/test.qfedu.com-acess.log; error_log /var/log/nginx/test.qfedu.com-error.log; if ( $uri ~ "^/qfedu_monitor_page" ){ break; } # 避免监控的特殊URL被业务上的REWRITE 规则重写 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html)$ { # 静态资源匹配 expires 1d; # 设置浏览器的缓存有效时间 } location ~ /qfedu_monitor_page { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } location / { include /etc/nginx/fastcgi_params; # yum 安装方式 # include fastcgi.conf; # 编译安装用 fastcgi.conf 注意配置文件路径 fastcgi_pass 127.0.0.1:9000; # 使用了PHP-FPM 9000 端口的 POOL 配置。 } } 8、监控测试 [root@qfedu.com ~]# curl -H "HOST: test.qfedu.com" pool: test.qfedu.com process manager: dynamic start time: 29/Mar/2020:20:17:34 +0800 start since: 853 accepted conn: 4 listen queue: 0 max listen queue: 0 listen queue len: 128 idle processes: 31 active processes: 1 total processes: 32 max active processes: 1 max children reached: 0 slow requests: 0 9、PHP-FPM 配置解释 # PHP-FPM 的 POOL名字 pool: test.qfedu.com # 这个POOL中进程管理方式,这里是动态管理方式。相反还有静态管理方式。 process manager: dynamic # POOL从什么时间开始启动 start time: 29/Mar/2020:20:17:34 +0800 # POOL 从启动到现在已经存活了多久 start since: 129 # 当前POOL接受的请求数 accepted conn: 6 # 请求等待队列当前长度,如果这个值不为0,那么说明你的请求处理已经开始有挤压了,应该注意系统状态。 listen queue: 0 # 从启动到现在,请求等待队列历史最大长度 max listen queue: 0 # 请求队列长度大小 listen queue len: 128 # 目前空闲进程数 idle processes: 31 # 目前工作进程数 active processes: 1 # 目前总进程数 total processes: 32 # 从启动到现在,最大的活跃进程数量 max active processes: 1 # 达到进程最大数量限制的次数,如果这个数量不为0,那说明设置的最大进程数量(pm.max_children)太小了,或者进程挤压了。 max children reached: 0 # 慢请求的数量 slow requests: 0 (编辑:PHP编程网 - 钦州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐


浙公网安备 33038102330484号