Nginx+PHP+PHPFPM环境搭建(2)-子目录API

上一篇文章记录了最基础的nginx+php-fpm的环境搭建,可以用浏览器访问一个demo的php返回phpinfo()信息,跑通了最基本的环境相当于helloword已经完成。这篇文章是记录怎么实现API的子目录,便于整理API,实现不同的请求。就像这样:

www.test.com/index.php
www.test.com/user/login.php

固定的配置

打开现在的nginx配置/usr/local/etc/nginx/nginx.conf,下面是比较关键的信息

server {
listen 80;
server_namelocalhost;
#charset koi8-r;
#access_log logs/host.access.log main;
 
location / {  默认访问root设置
    roothtml;
    indexindex.phpindex.htmlindex.htm;
}
 
location ~ .php$ {  访问php文件时候的设置
    fastcgi_intercept_errorson;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_indexindex.php;//访问index.php文件
    fastcgi_paramSCRIPT_FILENAME /usr/local/Cellar/nginx/1.10.1/html$fastcgi_script_name;
    include /usr/local/etc/nginx/fastcgi_params;
}
}

这个配置是上篇文章贴过来的,第一块代码的root是html,这个html文件夹位于/usr/local/Cellar/nginx/1.10.1/html,root html中间没有斜线意味着是相对路径,也就是相对root路径下的html,root的绝对路径是/usr/local/Cellar/nginx/1.10.1/,也就是nginx安装的路径。

第二块代码的fastcgi_param里面的路径是/usr/local/Cellar/nginx/1.10.1/html,可以看到是绝对路径,写死了的。

那么这时候进入localhost/index.php是没问题的,会访问html文件夹里面的index.php,但是如果访问下面这些路径怎么办呢?难道每一个url都对应一块config代码么?

localhost:80/user/login/index.php
localhost:80/list/hot/veryhot.php

灵活的配置

解决这个问题就是要用到通配符了,我们想实现任何url路径都会自动的去找这个路径的文件夹,想找任何名字的php文件都会自动进行名字匹配,只要root确定,是可以实现的,直接贴配置

location ~ .php$ {
  rootapi;//存放api的根文件夹
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_indexindex.php;
  fastcgi_paramSCRIPT_FILENAME $document_root/$fastcgi_script_name;
  includefastcgi_params;
}

root api是什么

是api而不是/api,说明是相对路径,那么对应的绝对路径是root/api,也就是/usr/local/Cellar/nginx/1.10.1/api,可以看到这个api文件夹和html文件夹是平行的,这个api文件夹是我自己创建的,用来存php的接口文件。所以以后url如果访问的php文件那么默认都去这个api文件夹找

fastcgi_pass 127.0.0.1:9000是什么

是nginx这个Webserver和php-fpm通信的端口,用9000

fastcgi_index index.php是只能访问叫做index名字的php吗

不是的,访问test.php,xxx.php名字无所谓,这里index.php只是示意

fastcgi_param 后面是什么

后面的配置就可以根据输入的url自动的去找文件夹里面的php

这样就配置完了。

测试配置

下面简单测试一下,在/usr/local/Cellar/nginx/1.10.1/api这个文件夹里面创建user文件夹,user文件夹里面创建login文件夹,login文件夹里面创建test.php文件,test.php文件里面内容和前一篇文章一样,打印phpinfo(),浏览器访问localhost:80/api/user/login/test.php就可以看到结果了。这样的话不同的API对应不同的url就对应了不同的文件夹里面的.php文件了。

稿源:Developer.XiaoyaoLi (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » Nginx+PHP+PHPFPM环境搭建(2)-子目录API

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录