windows 11 下用 nginx 1.31.6 与 php 8.3.32 搭建多站点环境,需分别下载解压组件、配置 php.ini(启用扩展、设 cgi.fix_pathinfo=1 等)、通过域名或端口在 nginx.conf 中定义多个 server 块并指定独立 root 目录,再以 php-cgi -b 127.0.0.1:9000 启动 fastcgi,最后运行 nginx 即可实现各站点 php 正确响应。

Windows 11 上用 Nginx 1.31.6 和 PHP 8.3.32 搭建多站点环境,核心是让每个域名或端口指向独立的网站目录,并确保 PHP 能正确响应各站点的 .php 请求。整个过程不依赖 Apache 或 IIS,纯靠 Nginx + php-cgi 协作完成,关键在配置隔离与路径准确。
下载与基础准备
从官方渠道获取两个组件:
-
Nginx 1.31.6:访问 nginx.org/download,下载 Windows 版 zip 包(如
nginx-1.31.6.zip),解压到无空格、无中文路径,例如C:\nginx -
PHP 8.3.32:前往 windows.php.net/download,选择
VC17 x64 Non-Thread Safe (NTS)ZIP 包(如php-8.3.32-Win32-vs17-x64.zip),解压至C:\php - 安装 Microsoft Visual C++ 2022 Redistributable (x64),否则 php-cgi 启动会报错 0xc000007b
PHP 配置要点(单份 php.ini 管所有站点)
进入 C:\php,复制 php.ini-development 为 php.ini,重点修改以下几项:
-
extension_dir = "C:/php/ext"(用正斜杠,路径必须绝对且真实存在) - 取消注释:
extension=mysqli、extension=pdo_mysql、extension=openssl、extension=zip -
cgi.fix_pathinfo=1(必需,否则 SCRIPT_FILENAME 解析失败) -
cgi.force_redirect=0(Windows + Nginx 场景下必须为 0) -
date.timezone="Asia/Shanghai"(避免日志刷警告) -
openssl.cafile="C:/php/cacert.pem"(可下载 cacert.pem 放入 PHP 目录)
保存后,用 php --ini 确认加载的是 C:\php\php.ini;再建一个 test.php 写 <?php phpinfo(); ?>,浏览器访问验证“Loaded Configuration File”是否一致。
Nginx 多站点配置(基于域名或端口)
编辑 C:\nginx\conf\nginx.conf,删除默认 server 块,按需添加多个独立站点。以下是两种常用方式:
方式一:不同域名(需改 hosts)
- 用记事本以管理员身份打开
C:\Windows\System32\drivers\etc\hosts,追加:
127.0.0.1 site2.test
- 在
nginx.conf的http块内添加:
listen 80;
server_name site1.test;
root C:/www/site1;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
server {
listen 80;
server_name site2.test;
root C:/www/site2;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
方式二:不同端口(免改 hosts)
- 直接配置监听 8001、8002 等端口,例如:
listen 8001;
server_name localhost;
root C:/www/site1;
# …其余同上
}
注意:root 路径必须用正斜杠,且对应目录需提前创建并放入 index.php 或 index.html。
启动与验证
PHP 必须先以 FastCGI 模式持续运行,Nginx 才能转发请求:
- 下载 RunHiddenConsole.exe 放入
C:\nginx - 新建
start_php.bat,内容为:RunHiddenConsole.exe C:/php/php-cgi.exe -b 127.0.0.1:9000 - 新建
start_nginx.bat,内容为:cd /d C:\nginx<br>start nginx.exe
- 依次双击运行两个批处理文件(顺序不能反)
- 访问
http://site1.test和http://site2.test(或:8001、:8002),看到各自首页即成功
若返回 502 错误,优先检查:php-cgi 是否真在运行(任务管理器看进程)、端口是否冲突、fastcgi_pass 与 -b 参数是否完全一致、SCRIPT_FILENAME 路径拼接是否正确。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











