nginx下开启pathinfo模式

本文详细介绍了如何在Nginx配置文件中修改路径信息处理方式,从传统方法到URL重写实现Pathinfo模式,并提供了实际操作步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用的一键安装包是在lnmp.org下载的 其他版本的不保证通用,

找到/usr/local/nginx/conf/nginx.conf

将这一段:

location ~ [^/]\.php(/|$)
			{
				# comment try_files $uri =404; to enable pathinfo
				try_files $uri =404;
				fastcgi_pass  unix:/tmp/php-cgi.sock;
				fastcgi_index index.php;
				include fastcgi.conf;
				#include pathinfo.conf;
			}

改为:

location ~ \.php {
                #fastcgi_pass 127.0.0.1:9000; 
                #fastcgi_pass unix:/dev/shm/php-cgi.sock; 
                fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_index index.php;
                include fastcgi.conf;
                set $real_script_name $fastcgi_script_name;
                if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                set $real_script_name $1;
                set $path_info $2;
            }
                fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
            }


重启nginx服务器查看成功;

还有一种方式是通过重写url来实现pathinfo模式:

location / {
    if (!-e $request_filename){
        rewrite ^/(.*)$ /index.php?s=/$1 last;
    }
}
第二种方式理论上是对的,但是本人没有测试成功,仅作参考


<think>我们正在处理一个关于在Windows环境下使用Nginx部署PHP项目的请求。根据提供的引用,我们可以整合信息并给出步骤。引用[1]提到了WNMP环境的搭建(Windows、Nginx、MySQL、PHP),引用[2]是关于部署Vue项目(但其中包含Nginx配置),引用[3]则提到了在Windows下用Nginx+PHP运行项目,并涉及到开启MySQL扩展。我们将结合这些信息,并按照以下步骤进行:1.安装必要的软件:Nginx、PHP、MySQL(如果需要数据库)2.配置Nginx以处理PHP请求3.配置PHP4.测试部署注意:由于用户只要求部署PHP项目,我们主要关注Nginx和PHP的配置。MySQL的安装和配置如果需要可以提及,但不是重点。步骤详细说明:第一步:下载并安装Nginx-前往Nginx官网下载Windows版本的Nginx(一般为zip包)-解压到指定目录,例如:`C:\nginx`第二步:下载并配置PHP-前往PHP官网下载Windows版本的PHP(建议选择非线程安全版本,因为Nginx通常使用FastCGI方式运行PHP,而FastCGI是多进程的)-解压到指定目录,例如:`C:\php`-配置PHP:复制一份`php.ini-development`并重命名为`php.ini`-在`php.ini`中修改一些基本配置,例如:-设置`cgi.fix_pathinfo=1`(去掉注释)-开启需要的扩展,比如:`extension=mysqli`(去掉前面的分号)第三步:配置Nginx持PHP-打开Nginx的配置文件(`conf/nginx.conf`)-在`http`块中的`server`块内,配置处理PHP请求的部分,如下:location~\.php${roothtml;#这里指向你的项目根目录,例如html目录下放项目fastcgi_pass127.0.0.1:9000;#这里和PHP-FPM的监听地址一致fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params;}-注意:默认情况下,Nginx的根目录是`html`(在nginx目录下),你可以将你的PHP项目放在这个目录下。第四步:启动PHP-CGI(或PHP-FPM)-在Windows中,我们可以使用PHP自带的CGI模式。打开命令提示符,进入PHP目录,执行:php-cgi.exe-b127.0.0.1:9000-cC:\php\php.ini(注意:这里使用-b参数指定绑定地址和端口,-c指定php.ini的路径)-或者,如果你下载的是带有FPM的PHP版本(Windows下通常不包含FPM,所以通常用CGI),则可以使用FPM。但一般Windows下用CGI即可。第五步:启动Nginx-双击nginx.exe,或者在命令行中进入nginx目录,执行`startnginx`第六步:测试-在Nginx的html目录下创建一个test.php文件,内容为`<?phpphpinfo();?>`-在浏览器中访问`http://localhost/test.php`,如果看到PHP信息页面,则配置成功。注意:每次启动都需要先启动PHP-CGI再启动Nginx。可以写一个批处理文件来同时启动。关于MySQL:如果需要,可以下载MySQL并安装,然后在PHP中配置扩展(如前面所述开启mysqli或pdo_mysql)。根据引用[2]中的配置,我们还可以加入gzip压缩等优化,但这不是必须的。引用[3]中提到了开启php_mysql.dll和php_mysqli.dll,我们在第二步配置php.ini时已经做了。现在,我们按照用户要求生成相关问题。</think>### Windows环境下使用Nginx部署PHP项目教程 #### 一、环境准备 1. **下载必要软件** - [Nginx Windows版](https://nginx.org/en/download.html) - [PHP Windows版](https://windows.php.net/download/)(选择非线程安全版本,如`nts`) - 可选:[MySQL](https://dev.mysql.com/downloads/installer/) 或 MariaDB 2. **目录结构建议** ``` C:\web\ ├── nginx\ # Nginx主目录 ├── php\ # PHP主目录 ├── mysql\ # MySQL目录(可选) └── projects\ # PHP项目存放目录 ``` #### 二、安装与配置步骤 ##### 1. 配置PHP 1. 解压PHP到`C:\web\php` 2. 复制`php.ini-development`重命名为`php.ini` 3. 启用关键扩展(取消注释): ```ini extension_dir = "ext" extension=mysqli ; MySQL持[^3] extension=openssl cgi.fix_pathinfo=1 ; 解决路径问题 ``` 4. 配置环境变量:将`C:\web\php`加入系统`PATH` ##### 2. 配置Nginx 1. 解压Nginx到`C:\web\nginx` 2. 修改`conf/nginx.conf`,在`http`块内添加: ```nginx server { listen 80; server_name localhost; root C:/web/projects; # 项目根目录 location / { index index.php index.html; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; # PHP-CGI监听端口 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } ``` > 关键说明:`fastcgi_param`确保PHP文件路径正确解析[^1] ##### 3. 启动服务 1. **启动PHP-CGI**(管理员权限运行): ```bash cd C:\web\php php-cgi.exe -b 127.0.0.1:9000 -c php.ini ``` 2. **启动Nginx**: ```bash cd C:\web\nginx start nginx ``` #### 三、验证部署 1. 在`C:\web\projects`创建`info.php`: ```php <?php phpinfo(); ?> ``` 2. 浏览器访问:`http://localhost/info.php` → 显示PHP配置信息即表示成功 #### 四、常见问题解决 - **403 Forbidden**:检查Nginx配置中`root`路径权限 - **502 Bad Gateway**: - 确认PHP-CGI已启动:`tasklist | findstr "php-cgi"` - 端口冲突:修改`fastcgi_pass`端口(如9001) - **MySQL连接失败**: - 检查`php.ini`中`mysqli`扩展已启用[^3] - 确认MySQL服务运行:`net start mysql` #### 五、生产环境优化 ```nginx # 在http块内添加 gzip on; gzip_types text/plain application/xml application/javascript text/css application/json; keepalive_timeout 65; client_max_body_size 20M; # 允许大文件上传 ``` > 提示:长期运行建议使用`winsw`将PHP-CGI注册为系统服务[^1]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值