目录

Nginx-全面解析与-LNMP-架构部署指南

Nginx 全面解析与 LNMP 架构部署指南

Nginx 全面解析与 LNMP 架构部署指南

一、Nginx 简介

Nginx 是由俄罗斯程序员 Igor Sysoev 开发的轻量级 Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,最初为俄国大型入口网站 Rambler 设计。2004 年 10 月 4 日发布首个公开版本 0.1.0,2011 年 6 月 1 日推出 1.0.4 版本,以类 BSD 许可证开源。其凭借稳定性、丰富功能、简洁配置及低资源消耗闻名,在同类型网页服务器中并发能力突出,百度、京东、新浪等国内知名企业均有使用

二、Nginx 特性与优点

1. 核心特性

  • 高并发支持:可替代 Apache 应对高连接场景,支持高达 5 万个并发连接响应
  • 先进开发模型:采用 epoll 和 kqueue 事件驱动模型
  • 多角色支持:既能作为负载均衡服务器,直接支持 PHP 程序服务,也可作为 HTTP 代理服务器
  • 高效开发语言:基于 C 语言编写,系统资源开销和 CPU 使用效率优于 Perlbal

2. 主要优点

优势类别具体说明
性能表现官方测试支撑 5 万并发连接,实际生产环境可达 2-3 万;3 万并发下 10 个进程仅耗 150M 内存
易用性配置文件风格简洁易懂,类程序语法
成本优势开源免费,相比 F5 BIG-IP 等硬件负载均衡交换机可节省十多万至几十万成本
功能扩展性支持 Rewrite 重写规则、GZIP 压缩、SSL 协议,内置健康检查与访问控制功能
稳定性与维护性反向代理时宕机概率低,支持热部署、动态编译模块,文档齐全且二次开发资源丰富
性能优化支持事件驱动、AIO、mmap 等技术,可优化网络处理效率

三、Nginx 功能及应用场景

1. 基本功能

  • 静态资源服务:作为 Web 服务器托管静态资源,支持缓存打开的文件描述符
  • 多协议代理:提供 HTTP、SMTP、POP3 协议的反向代理服务
  • 性能增强:具备缓存加速、负载均衡能力
  • 语言支持:兼容 FastCGI(如 LNMP 中的 PHP-FPM)、uWSGI(Python)等
  • 模块化扩展:支持 zip 过滤、SSI 及图像尺寸调整等模块,集成 SSL 功能

2. 扩展功能

包括基于名称和 IP 的虚拟主机、keepalive 长连接、平滑升级、定制访问日志、URL 重写、路径别名、基于 IP / 用户的访问控制、速率与并发数限制等

3. 应用类别

  • 动态程序运行:结合 FastCGI 运行 PHP、JSP、Perl 等程序
  • 代理与负载:作为反向代理服务器实现负载均衡与规则过滤
  • 静态资源托管:部署静态 HTML 网页、图片等资源
  • 新技术融合:与各类新兴技术结合的创新应用

四、Nginx 模块与工作原理

1. 模块分类

(1)按结构划分
模块类型包含模块示例说明
核心模块HTTP 模块、EVENT 模块、MAIL 模块维持 Nginx 基础运行能力
基础模块HTTP Access、FastCGI、Proxy、Rewrite 模块提供核心业务功能,默认集成
第三方模块HTTP Upstream、Request Hash、Notice 模块扩展功能,需按需集成或开发
(2)按功能划分
  • Handlers(处理器模块):直接处理请求,负责输出内容与修改 headers,每个请求仅由一个处理器模块处理
  • Filters(过滤器模块):修改处理器模块的输出内容,最终由 Nginx 统一输出
  • Proxies(代理器模块):如 HTTP Upstream 模块,实现与后端服务的交互,提供代理与负载均衡功能

2. 工作原理

(1)模块加载机制

Nginx 模块采用静态编译方式,启动后自动加载;与 Apache 不同,无需编译为 so 文件再动态加载,解析配置时由对应模块处理请求

(2)进程架构
  • 进程组成:启动后生成 1 个 Master 进程和多个 Worker 进程
  • Master 进程作用:不处理客户端请求,负责管理 Worker 进程,实现服务重启、平滑升级、日志切换、配置生效等功能
  • Worker 进程作用:平等竞争处理客户端请求,每个进程拥有独立连接池,连接池大小由 worker_connections 定义
(3)连接处理机制
  • 惊群问题解决:通过 accept_mutex 互斥锁,确保同一时刻仅一个 Worker 进程接受连接
  • 连接平衡控制:通过 ngx_accept_disabled 变量调节进程竞争锁的优先级,平衡各进程连接数
  • 最大连接数计算:HTTP 本地资源服务最大并发数为 worker_connections × worker_processes;反向代理场景因需同时连接客户端与后端服务,最大并发数为(worker_connections × worker_processes)/ 2

五、Nginx 部署流程

1. 前置准备

  • 环境配置:关闭防火墙和 SELinux
  • 依赖安装:通过 yum 安装 Development Tools 开发包,以及 pcre-devel、openssl-devel、gd-devel 等依赖库与 wget 等工具
  • 用户与目录:创建 nginx 系统用户(useradd -r -M -s /sbin/nologin nginx),建立 /var/log/nginx 日志目录并授权

2. 编译安装

  1. 解压源码包:tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/
  2. 配置编译参数:指定安装路径、运行用户、启用 debug 及 SSL、FastCGI 等模块,配置日志路径
  3. 编译与安装:执行 makemake install 完成安装

3. 后续配置

  • 环境变量:添加 /usr/local/nginx/sbin 至系统 PATH
  • 服务控制:通过 nginx 命令管理服务,支持 -t(检查配置)、-v(版本查看)、-c(指定配置文件)、-s(发送 stop/quit/reload 等信号)

六、Nginx 配置文件详解

1. 核心配置文件

文件名作用
nginx.confNginx 主配置文件,包含全局与协议配置
mime.types定义 MIME 类型与文件扩展名的关联
fastcgi.confFastCGI 相关配置参数
proxy.conf反向代理相关配置参数
sites.conf虚拟主机及网站配置

2. 关键配置段

(1)main 全局配置段
  • 调试相关:daemon(守护进程模式,调试设为 off)、master_process(主从进程模式,调试设为 off)、error_log(日志路径与级别,debug 级需编译时加 –with-debug)
  • 基础运行:user(Worker 进程运行用户 / 组)、pid(PID 文件路径)、worker_rlimit_nofile(Worker 进程最大打开文件数)
  • 性能优化:worker_processes(Worker 进程数,建议设为 CPU 核心数或核心数 - 1)、worker_cpu_affinity(进程绑定 CPU 核心)、worker_priority(Worker 进程优先级)
(2)events 配置段
  • 连接调度:accept_mutex(负载均衡锁,on 启用序列化响应)、lock_file(互斥锁文件路径)
  • 事件模型:use(指定事件模型,建议自动选择)
  • 连接限制:worker_connections(单个进程最大连接数)
(3)http 配置段

包含协议级配置,可嵌套 upstream(负载均衡)、server(虚拟主机)、location(请求匹配)等子段:

nginx

http {
  include mime.types;
  default_type application/octet-stream;
  keepalive_timeout 65;
  gzip on;
  
  upstream backend {  # 负载均衡配置
    server 192.168.1.100:80;
  }
  
  server {  # 虚拟主机配置
    listen 80;
    server_name www.example.com;
    
    location / {  # 请求匹配配置
      root /vhost/web;
      index index.html index.php;
    }
    
    location ~ \.php$ {  # PHP 解析配置
      root /var/www/html;
      fastcgi_pass 192.168.100.30:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
      include fastcgi_params;
    }
  }
}

七、LNMP 架构部署

1. 架构拓扑

  • Nginx 服务器:192.168.100.10(处理 HTTP 请求,转发 PHP 请求)
  • MySQL 服务器:192.168.100.20(提供数据库服务,需预先部署)
  • PHP 服务器:192.168.100.30(运行 PHP-FPM,解析 PHP 脚本)

2. 组件部署

(1)MySQL 配置(补充)
  • 配置 man 手册路径:编辑 /etc/man_db.conf 添加 /usr/local/mysql/man
  • 配置库文件路径:创建 /etc/ld.so.conf.d/mysql.conf 写入 /usr/local/mysql/lib
(2)PHP 部署
  1. 安装依赖:yum -y install libxml2-devel openssl-devel bzip2-devel ... php-mysqlnd
  2. 配置源:安装 remi 源并启用 php7 仓库
  3. 安装 PHP 组件:yum -y install php php-cli php-fpm php-mysqlnd ... php-redis
  4. 配置 PHP-FPM:修改 /etc/php-fpm.d/www.conf,设置 listen = 0.0.0.0:9000,允许 Nginx 服务器(192.168.100.10)连接
  5. 测试页面:创建 /var/www/html/index.php 写入 phpinfo (),授权 apache 用户,重启并启用 php-fpm 服务
(3)Nginx 与 PHP 整合
  1. 修改配置:编辑 nginx.conf,在 location / 中添加 index.php 为默认索引;新增 location ~ \.php$ 段配置反向代理至 PHP 服务器 9000 端口,指定脚本路径
  2. 验证启动:nginx -t 检查配置,重启 Nginx 服务,访问 192.168.100.10/index.php 验证 PHP 解析

案例:

nginx部署

关闭防火墙和selinux 略

配置本地yum仓库:

[root@syf ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@syf ~]# cd /etc/yum.repos.d/
[root@syf yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo
[root@syf yum.repos.d]# rm -rf *
[root@syf yum.repos.d]# vim sy.repo
[aa]
name=aa1
baseurl=file:///mnt
enabled=1
gpgcheck=0
~   

创建nginx用户:

[root@syf ~]# useradd -r -M -s /sbin/nologin nginx

安装开发工具包:(使用本地yum仓库安装)

[root@syf ~]# yum -y groupinstall “Development Tools”

安装依赖包和一些常用工具:(使用网络yum仓库)

[root@syf ~]# cd /etc/yum.repos.d/
[root@syf yum.repos.d]# ls
sy.repo
[root@syf yum.repos.d]# rm -rf *
[root@syf yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --100  2523  100  2523    0     0   6253      0 --:--:-- --:--:-- --:--:--  6260
[root@syf yum.repos.d]# yum -y install epel-release
[root@syf ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make zlib-devel wget lrzsz

创建日志存放目录:

[root@syf ~]# mkdir -p /var/log/nginx
[root@syf ~]# chown -R nginx.nginx /var/log/nginx

上传压缩包:

[root@syf ~]# rz -E
rz waiting to receive.

解压nginx源码包:

[root@syf ~]# tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/

编译安装:

[root@syf ~]# cd /usr/local/nginx-1.24.0/
[root@syf nginx-1.24.0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-debug \
> --with-http_ssl_module \
> --with-http_realip_module \
> --with-http_image_filter_module \
> --with-http_gunzip_module \
> --with-http_gzip_static_module \
> --with-http_stub_status_module \
> --http-log-path=/var/log/nginx/access.log \
> --error-log-path=/var/log/nginx/error.log
[root@syf nginx-1.24.0]# make

[root@syf nginx-1.24.0]# make install

安装后的配置
配置环境变量:

[root@syf nginx-1.24.0]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@syf nginx-1.24.0]# . /etc/profile.d/nginx.sh 

启动nginx,并查看端口情况

[root@syf nginx-1.24.0]# nginx 
[root@syf nginx-1.24.0]# ss -anlt
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128     *:111                 *:*                  
LISTEN     0      128     *:80                  *:*                  
LISTEN     0      128     *:6000                *:*                  
LISTEN     0      5      192.168.122.1:53                  *:*                  
LISTEN     0      128     *:22                  *:*                  
LISTEN     0      128    127.0.0.1:631                 *:*                  
LISTEN     0      100    127.0.0.1:25                  *:*                  
LISTEN     0      128    127.0.0.1:6010                *:*                  
LISTEN     0      128    :::111                :::*                  
LISTEN     0      128    :::6000               :::*                  
LISTEN     0      128    :::22                 :::*                  
LISTEN     0      128       ::1:631                :::*                  
LISTEN     0      100       ::1:25                 :::*                  
LISTEN     0      128       ::1:6010               :::*                  

服务控制方式,使用nginx命令

-t 检查配置文件语法

[root@syf ~]# 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

-v 输出nginx的版本

[root@syf ~]# nginx -v
nginx version: nginx/1.24.0

-c 指定配置文件路径

-s 发送服务控制信号,可选值有stop、quit、reopen、reload

启动nginx

https://i-blog.csdnimg.cn/direct/e5ef2106d6344a09baec9929cf399a54.png#pic_center

首先把nginx给停止了

[root@syf ~]# nginx -s stop

然后将nginx.conf和mime.types复制到/opt目录下

[root@syf ~]# cd /usr/local/nginx
[root@syf nginx]# cd conf/
[root@syf conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[root@syf conf]# cp nginx.conf /opt/
[root@syf conf]# cp mime.types /opt/
[root@syf conf]# nginx -c /opt/nginx.conf 
[root@syf conf]# ss -anlt
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128     *:111                 *:*                  
LISTEN     0      128     *:80                  *:*                  
LISTEN     0      128     *:6000                *:*                  
LISTEN     0      5      192.168.122.1:53                  *:*                  
LISTEN     0      128     *:22                  *:*                  
LISTEN     0      128    127.0.0.1:631                 *:*                  
LISTEN     0      100    127.0.0.1:25                  *:*                  
LISTEN     0      128    127.0.0.1:6010                *:*                  
LISTEN     0      128    :::111                :::*                  
LISTEN     0      128    :::6000               :::*                  
LISTEN     0      128    :::22                 :::*                  
LISTEN     0      128       ::1:631                :::*                  
LISTEN     0      100       ::1:25                 :::*                  
LISTEN     0      128       ::1:6010               :::*                  

再次停掉nginx

[root@syf conf]# nginx -c /opt/nginx.conf -s stop
[root@syf conf]# ss -anlt
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128     *:111                 *:*                  
LISTEN     0      128     *:6000                *:*                  
LISTEN     0      5      192.168.122.1:53                  *:*                  
LISTEN     0      128     *:22                  *:*                  
LISTEN     0      128    127.0.0.1:631                 *:*                  
LISTEN     0      100    127.0.0.1:25                  *:*                  
LISTEN     0      128    127.0.0.1:6010                *:*                  
LISTEN     0      128    :::111                :::*                  
LISTEN     0      128    :::6000               :::*                  
LISTEN     0      128    :::22                 :::*                  
LISTEN     0      128       ::1:631                :::*                  
LISTEN     0      100       ::1:25                 :::*                  
LISTEN     0      128       ::1:6010               :::*                  

一、配置文件详解

主配置文件:

/usr/local/nginx/conf/nginx.conf

默认启动nginx时,使用的配置文件是:安装路径

/conf/nginx.conf

可以在启动nginx时通过-c选项来指定要读取的配置文件

//nginx常见的配置文件及其作用

nginx.conf nginx的基本配置文件

mime.types MIME类型关联的扩展文件

fastcgi.conf 与fastcgi相关的配置

proxy.conf 与proxy相关的配置

sites.conf 配置nginx提供的网站,包括虚拟主机

Nginx.conf配置文件详解

main配置段:全局配置段,其中main配置段中可能包含event配置段

events{}:定义event模型工作特性

http{}:定义http协议相关的配置

支持使用变量:

(1)内置变量:模块会提供内建变量定义

(2)自定义变量:

set var_name value

用于调试、定位问题的配置参数

daemon  {on|off};   //是否以守护进程方式运行nginx,调试应设置为off
master_process  {on|off};    //是否以master/worker模型来运行nginx,调试时可以设置为off
error_log 位置  级别;    //配置错误日志

error_log里的位置和级别的一些选项

位置级别
file stderr syslog:server=address[,parameter=vaule] memory:sizedebug:若要使用debug级别,需要在编译nginx时使用–with-debug选项 info notice warn error crit alert emerg

正常运行必备的配置参数

user  USERNAME  [GROUPNAME];     //指定运行worker进程的用户和组
pid     /path/to/pid_file;        //指定nginx守护进程的pid文件
worker_rlimit_nofile  number;     //设置所有worker进程最大可以打开的文件数,默认为1024
worker_rlimit_core  size;      //指明所有worker进程所能够使用的总体的最大核心文件大小,保持默认即可

优化性能的配置参数

worker_processes  n;    //启动n个worker进程,这里的n为了避免上下文切换,通常设置为cpu总核心数-1或等于总核心数
worker_cpu_affinity cpumask ...;   //将进程绑定到某cpu中,避免频繁刷新缓存

#cpumask:使用8位二进制表示cpu核心,如:

    0000 0001   #第一颗cpu核心
    0000 0010   #第二颗cpu核心
    0000 0100   #第三颗cpu核心
    0000 1000   #第四颗cpu核心
    0001 0000   #第五颗cpu核心
    0010 0000   #第六颗cpu核心
    0100 0000   #第七颗cpu核心
    1000 0000   #第八颗cpu核心
timer_resolution  interval;  //计时器解析度。降低此值,可减少gettimeofday()系统调用的次数
worker_priority  number;     //指明worker进程的nice值

事件相关的配置:event{}段中的配置参数

accept_mutex {off|on};          //master调度用户请求至各worker进程时使用的负载均衡锁;on表示能让多个worker轮流的、序列化的去响应新请求
lock_file file;            //accept_mutex用到的互斥锁所文件路径
use  [epoll | rtsig | select | poll];          //指明使用的事件模型,建议让nginx自行选择
worker_connections  1024;  //每个进程能够接受的最大连接数

网络连接相关的配置参数

keepalive_timeout number;    //长连接的超时时长,默认为65s
keepalive_requests number;    //在一个长连接上所能够允许请求的最大资源数
keepalive_disable [msie6|safari|none];    //为指定类型的UserAgent禁用长连接
tcp_nodelay on|off;    //是否对长连接使用TCP_NODELAY选项,为了提升用户体验,通常设为on
client_header_timeout number;    //读取http请求报文首部的超时时长
client_body_timeout number;    //读取http请求报文body部分的超时时长
send_timeout number;    //发送响应报文的超时时长

Fastcgi的相关配置参数

LNMP:php要启用fpm模型

location  ~  \.php$ {
  root html;
  fastcgi_pass 127.0.0.1:9000;      //定义反向代理
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  include fastcgi_params;

}
常需要进行调整的参数

worker_processes
worker_connections
worker_cpu_affinity
worker_priority

http{....}:配置http相关,由ngx_http_core_module模块引入。Nginx的HTTP配置主要包括4个区块

http {//协议级别
  include mime.types;
  default_type application/octet-stream;
  keepalive_timeout 65;
  gzip on;
  upstream {//负载均衡配置
​    ...
  }

  server {//服务器级别,每个server类似于httpd中的一个<VirtualHost>

​    listen 80;
​    server_name localhost;
​    location / {//请求级别,类似于httpd中的<Location>,用于定义URL与本地文件系统的映射关系
​      root html;
​      index index.html index.htm;
​    }

  }

}

//http{}端配置指定
server{}:定义一个虚拟主机
server  { 
listen  80;
server_name  [www.example.com;](http://www.example.com;)
root  “/vhost/web”;

}

//listen: 指定监听的地址和端口

listen  address[:port]
listen  port;

LNMP架构部署

Nginx:192.168.100.10

Mysql:192.168.100.20

Php:192.168.100.30

关闭防火墙和selinux 略

已部署yum源

已nginx部署

已部署mysql

安装后配置:(MySQL)

[root@mysql ~]# vim /etc/man_db.conf 

#MANDATORY_MANPATH                      /usr/src/pvm3/man
#
MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man
MANDATORY_MANPATH                       /usr/local/mysql/man    //////
#---------------------------------------------------------
# set up PATH to MANPATH mapping

[root@mysql ~]# vim /etc/ld.so.conf.d/mysql.conf 
/usr/local/mysql/lib
~  

部署PHP

安装依赖包和工具

[root@php ~]# cd /etc/yum.repos.d/
[root@php yum.repos.d]# ls
sy.repo
[root@php yum.repos.d]# rm -rf *
[root@php yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2025-09-25 09:23:26--  https://mirrors.aliyun.com/repo/Centos-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 58.216.31.205, 58.216.31.206, 58.216.31.207
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|58.216.31.205|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2523 (2.5K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/CentOS-Base.repo’

100%[===============================>] 2,523       --.-K/s   in 0s      

2025-09-25 09:23:26 (487 MB/s) - ‘/etc/yum.repos.d/CentOS-Base.repo’ saved [2523/2523]
[root@php yum.repos.d]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only

[root@php yum.repos.d]# yum -y install epel-release

[root@php yum.repos.d]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel  readline readline-devel libxslt libxslt-devel  php-mysqlnd

[root@php ~]# cd /etc/yum.repos.d/
[root@php yum.repos.d]# ls
CentOS-Base.repo  epel.repo  epel-testing.repo

安装php

安装php源

[root@php yum.repos.d]# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

[root@php yum.repos.d]# ls
CentOS-Base.repo   remi-php54.repo  remi-php73.repo  remi-php82.repo
epel.repo          remi-php70.repo  remi-php74.repo  remi-php83.repo
epel-testing.repo  remi-php71.repo  remi-php80.repo  remi.repo
remi-modular.repo  remi-php72.repo  remi-php81.repo  remi-safe.repo

启用php7

[root@php yum.repos.d]# yum-config-manager --enable remi-php70

安装php

[root@php yum.repos.d]# yum -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis

配置php

[root@php ~]# vim /etc/php-fpm.d/www.conf 

listen = 127.0.0.1:9000

listen.allowed_clients = 192.168.100.10
;listen = /run/php-fpm/www.sock

生成测试页面:

[root@php ~]# cd /var/www/html/
[root@php html]# vim index.php
<?php
        phpinfo();
?>
~  
[root@php html]# id apache
uid=48(apache) gid=48(apache) groups=48(apache)
[root@php html]# chown -R apache.apache /var/www/html/

[root@php ~]# systemctl restart php-fpm
[root@php ~]# systemctl enable php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

nginx节点:

整合nginx和php

[root@syf ~]# vim /usr/local/nginx/conf/nginx.conf
        location / {
            root   html;    # 更改目录
            index  index.php index.html index.htm;  #添加一个index.php
        }
        location ~ \.php$ {
            root           /var/www/html;    # 更改目录
            fastcgi_pass   192.168.100.30:9000;   # 这里为PHP服务器的地址
            fastcgi_index  index.php;            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
            include        fastcgi_params;                                }

测试nginx配置文件

[root@syf ~]# nginx 
[root@syf ~]# 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
[root@syf ~]# nginx -s reload
[root@syf ~]# nginx -s stop
[root@syf ~]# nginx 
[root@syf ~]# rm -rf /usr/local/nginx/html/*

PHP:

[root@php ~]# ss -alnt
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128    127.0.0.1:9000                 *:*                  
LISTEN      0      128      *:111                  *:*                  
LISTEN      0      128      *:6000                 *:*                  
LISTEN      0      5      192.168.122.1:53                   *:*                  
LISTEN      0      128      *:22                   *:*                  
LISTEN      0      128    127.0.0.1:631                  *:*                  
LISTEN      0      100    127.0.0.1:25                   *:*                  
LISTEN      0      128    127.0.0.1:6010                 *:*                  
LISTEN      0      128     :::111                 :::*                  
LISTEN      0      128     :::80                  :::*                  
LISTEN      0      128     :::6000                :::*                  
LISTEN      0      128     :::22                  :::*                  
LISTEN      0      128    ::1:631                 :::*                  
LISTEN      0      100    ::1:25                  :::*                  
LISTEN      0      128    ::1:6010                :::*         
[root@php ~]# vim /etc/php-fpm.d/www.conf 

listen = 0.0.0.0:9000

[root@php ~]# systemctl restart php-fpm

验证:

https://i-blog.csdnimg.cn/direct/5dc367db1b4347f79a1b1acb3b29c7df.png#pic_center