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. 编译安装
- 解压源码包:
tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/
- 配置编译参数:指定安装路径、运行用户、启用 debug 及 SSL、FastCGI 等模块,配置日志路径
- 编译与安装:执行
make
与make install
完成安装
3. 后续配置
- 环境变量:添加
/usr/local/nginx/sbin
至系统 PATH - 服务控制:通过 nginx 命令管理服务,支持
-t
(检查配置)、-v
(版本查看)、-c
(指定配置文件)、-s
(发送 stop/quit/reload 等信号)
六、Nginx 配置文件详解
1. 核心配置文件
文件名 | 作用 |
---|---|
nginx.conf | Nginx 主配置文件,包含全局与协议配置 |
mime.types | 定义 MIME 类型与文件扩展名的关联 |
fastcgi.conf | FastCGI 相关配置参数 |
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 部署
- 安装依赖:
yum -y install libxml2-devel openssl-devel bzip2-devel ... php-mysqlnd
。 - 配置源:安装 remi 源并启用 php7 仓库
- 安装 PHP 组件:
yum -y install php php-cli php-fpm php-mysqlnd ... php-redis
- 配置 PHP-FPM:修改
/etc/php-fpm.d/www.conf
,设置listen = 0.0.0.0:9000
,允许 Nginx 服务器(192.168.100.10)连接 - 测试页面:创建
/var/www/html/index.php
写入 phpinfo (),授权 apache 用户,重启并启用 php-fpm 服务
(3)Nginx 与 PHP 整合
- 修改配置:编辑 nginx.conf,在
location /
中添加 index.php 为默认索引;新增location ~ \.php$
段配置反向代理至 PHP 服务器 9000 端口,指定脚本路径 - 验证启动:
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
首先把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:size | debug:若要使用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
验证: