在 Windows 上手動搭建高性能 Nginx + PHP 環境,適合學習 Nginx 配置、不想用集成包的開發者。
nginx-1.4.7(官網 nginx.org)MySQL Server 5.5(官網或 歸檔)php-5.4.39-nts-Win32-VC9-x86.zip(非線程安全,歸檔)本教程安裝目錄統一規劃為 E:\wnmp\。
E:\wnmp\ ├── nginx\ ├── mysql\ └── php\
# E:\wnmp\nginx\conf\nginx.conf 關鍵修改
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root E:/wnmp/nginx/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP 處理
location ~ \.php$ {
root E:/wnmp/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
; E:\wnmp\php\php.ini 關鍵修改
extension_dir = "E:/wnmp/php/ext"
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_curl.dll
cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1
date.timezone = Asia/Shanghai
# 1. 啟動 PHP-CGI (監聽 9000)
E:\wnmp\php\php-cgi.exe -b 127.0.0.1:9000 -c E:\wnmp\php\php.ini
# 2. 啟動 Nginx
E:\wnmp\nginx\nginx.exe -p E:\wnmp\nginx
# 3. 啟動 MySQL (已作為服務安裝,或 mysqld --console)
net start mysql
@echo off
REM start_wnmp.bat
set PHP_FCGI_MAX_REQUESTS=1000
echo Starting PHP FastCGI...
start /b "" "E:\wnmp\php\php-cgi.exe" -b 127.0.0.1:9000 -c E:\wnmp\php\php.ini
echo Starting Nginx...
start /b "" "E:\wnmp\nginx\nginx.exe" -p E:\wnmp\nginx
echo WNMP Started.
pause
@echo off
REM stop_wnmp.bat
echo Stopping Nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
echo WNMP Stopped.
pause
// E:\wnmp\nginx\html\phpinfo.php
<?php phpinfo(); ?>
https://localhost/phpinfo.php 顯示 PHP 信息頁 → 成功https://localhost/ 顯示 Nginx 歡迎頁| 現象 | 原因 | 解決 |
|---|---|---|
| 502 Bad Gateway | PHP-CGI 未啟動或端口不匹配 | 檢查 9000 端口、php-cgi 進程、防火牆 |
| No input file specified | SCRIPT_FILENAME 路徑錯誤 | 確保 root 指向正確、$document_root 變量正確 |
| 權限錯誤 | Windows 文件系統權限 | 以管理員運行、授予 Users 讀寫權限 |
| MySQL 連不上 | 服務未啟動/端口衝突/密碼錯誤 | net start mysql、檢查 3306、root 密碼 |