前言
本文旨在对nginx的各项配置文件和参数做一个记录和总结。
原因是在配置框架和虚拟目录,web语言解析的nginx环境的时候遇到各种问题和参数,有时百度可以解决,有时直接复制粘贴,大都当时有些记忆,过后又浑然不知。本人又记性极差。所以,统一做个笔记,也相当于备忘吧。
本文会不断更新扩充,想到哪里或者正在遇到的问题,会记录下来。
正文
1)php常规配置。
1 location ~ .php$ { 2 fastcgi_pass 127.0.0.1:9000; 3 fastcgi_index index.php; 4 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 5 include fastcgi_params; 6 }
这是使用php的常规配置文件。
location 是对uri进行匹配,然后转发。这里理解为url就好,但不会匹配url中?和后面的内容,因为后面的内容不影响该资源的唯一性。
~ 开头表示区分大小写的正则匹配
.php$ 表示以.php结尾的资源
fastcgi_pass fasgcgi其实就是nginx一个模块啊,模块的这个参数是设置FastCgi服务器的地址,这个地址可以是一个域名或者ip地址,然后再加上端口号·。9000无疑就是php-fpm进程的端口号了。
fastcgi_index 设置默认访问文件。
fastcgi_param 这个就是设置fastcgi的一些参数,SCRIPT_FILENAME
参数 在php中使用,用来设定脚本的文件的绝对路径。文件名是什么呢?$document_root由前面的nginx配置的root参数决定,是nginx网站根目录的绝对路径,$fastcgi_script_name为文件在网站中的相对路径。比如地址是:http://127.0.0.1/thinkphp/public/index.php,那么$fastcgi_script_name就是thinkphp/public/index.php。
2)thinkphp5的配置
1 #surport thinkphp5 2 #首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。 3 location ~ .php(.*)$ { 4 fastcgi_pass 127.0.0.1:9000; 5 fastcgi_index index.php; 6 fastcgi_split_path_info ^((?U).+.php)(/?.+)$; 7 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 8 fastcgi_param PATH_INFO $fastcgi_path_info; 9 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 10 include fastcgi_params; 11 } 12 13 location /thinkphp/public/ { 14 15 if (!-e $request_filename) { 16 rewrite ^/thinkphp/public/(.*)$ /thinkphp/public/index.php?s=/$1 last; 17 break; 18 } 19 }
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。