https://www.cnblogs.com/knowledgesea/p/5175711.html
location块详解
一、语法规则: location[=|~|~*|^~] /uri/ { … }
1、“=” 开头表示精确匹配
2、“^~” 开头表示uri以某个常规字符串开头,理解为匹配url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
3、“~” 开头表示区分大小写的正则匹配
4、“~*” 开头表示不区分大小写的正则匹配
5、“!~”和“!~*”分别为区分大小写不匹配及不区分大小写不匹配 的正则
6、“/” 通用匹配,任何请求都会匹配到。
二、多个location块的匹配的优先级
1、= 首先是精准匹配优先级最高
2、^~ 其次是以某特定常规字符串开头的匹配,这个不是正则
3、~ 、 ~*、!~、!~* 再次是按顺序的正则匹配,依次为区分大小写的正则匹配、不区分大小写的正则匹配、依次为区分大小写的正则不匹配、不区分大小写的正则不匹配、
4、最后是 / 的通用符匹配
三、fastcgi配置
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 600;
}
fastcgi_index:如果请求的FastCGI URI以/结束,该指令设置的文件会被附加到URI的后面并保存在变量$fastcgi_script_name中
fastcgi_param:用来设置环境变量
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;//php脚本文件的访问路径,
四、解决nginx open() "/usr/local/var/run/nginx.pid" failed错误
sudo /usr/local/opt/nginx/bin/nginx -c /usr/local/etc/nginx/nginx.conf,使用nginx -c的参数指定nginx.conf文件的位置