记一次nginx php配置的心路历程
1.本来搞好了php的配置,想把目录下移一层 从 www.abc.com 变成 www.abc.com/wxapi ,由于我的真实文件目录比路由少了一层public 尝试了很多办法都不行 甚至想到了upstream+proxy_pass 但由于是内部转发会导致获取request url路径出问题。
例如我的路径是 www.abc.com/wxapi 想获取 /wxapi/public/index.php 用nginx各种正则也无法匹配对。因为$fastcgi_script_name 这里直接就是/wxapi/info.php,不能在中间硬插一个路径
在将近花费半天后 终于搞定 。终于搞清了fastcgi是如何匹配的
1.获取变量$fastcgi_script_name
2.用正则匹配出不含子路径/wxapi/的变量
3.拼接出真实的script_name地址。 #$real_script_name
4.这样fastcgi就可以解析最后的$doucument_root/$real_script_name 文件了
贴下代码
location /wxapi/ {
alias /usr/local/www/wxapi/public/;
index index.php index.html index.htm;
try_files $uri $uri/ index.php$is_args$args;
}
# location ~ \.php {
# echo 'fuck';
# }
location ~ ^/wxapi/.*\.php {
# 设置文件根路径
root /usr/local/www/wxapi/public/;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
##正则匹配URI,若能匹配将产生两个子组
if ($fastcgi_script_name ~ "^(/wxapi/)(.+?\.php)(/.+)?$") {
##将两个子组赋值给刚生成的两个nginx变量
set $real_script_name $2; #拼接出真实的script_name地址。 #$real_script_name
set $path_info $3; #支持pathinfo参数
}
# echo "real_script_name----$real_script_name";
# echo "path_info----$path_info";
# echo "document_root----$document_root";
fastcgi_index index.php;
# 这里一定要多一个/不然匹配会替换掉
fastcgi_param SCRIPT_FILENAME $document_root/$real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_pass unix:/usr/local/php-7.2.12/var/run/php-cgi.sock;
}
记一次nginx php配置的心路历程的更多相关文章
- 记一次Nginx的配置
记第一次Nginx的配置 Nginx 首先了解到Nginx是干什么的?它有哪些作用?比较常用到的基础功能有反向代理.负载均衡.正向代理.http服务器.这次部署用到的就是反向代理. 反向代理就是指在目 ...
- 我的Java历程_maven配置的心路历程
从github上download了个maven管理的开源项目,接下来随笔下安装maven的心路历程: 异常尴尬的是import进ide之后一个红色的感叹号!震惊!google一下知道了,maven没配 ...
- 【Asp.net Core】在 Linux 子系统中安装 nginx 并配置反向代理
上一篇鸟文中,老周已经介绍过在 Ubuntu 子系统中安装 dotnet-sdk 的方法,本文老周给大伙伴们说说安装 nginx 服务,并配置反向代理.同样,老周假设你从来没有用过 Linux,所以老 ...
- 如何在Nginx下配置PHP程序环境
1.nginx与PHP的关系 首先来看nginx与php的关系, FastCGI的关系(而不是像apache那样安装成nginx的模块) FastCGI的意思是, 快速的通用网关接口:CGI Comm ...
- 从零开始学 Java - CentOS 下 Nginx + Tomcat 配置负载均衡
为什么现在有非常多的聪明人都在致力于互联网? 最近在读埃隆·马斯克传记,他说「我认为现在有非常多的聪明人都在致力于互联网」. 仔细一想,好像真的是这样的. 我问了自己一个问题:如果你不敲代码了,你能做 ...
- Nginx主配置参数详解,Nginx配置网站
1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...
- nginx + tomcat配置负载均衡
目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...
- spring4+websocket+nginx详细配置
实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...
- Nginx Location配置总结
Nginx Location配置总结 语法规则: location [=|~|~*|^~] /uri/ { - }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即 ...
随机推荐
- Liferay7 BPM门户开发之20: 理解Asset Framework
Asset框架用于将您开发的门户内容添加Liferay的核心系统功能.打个比方,你开发了一个事件TodoList管理的插件,在列表显示的时候,你可以集成Asset框架,让你的自定义内容支持Tag标签. ...
- iOS-Xcode解决【workspace integrity couldn't load project'】
出现如标题提示的项目打不开情况,多半可能是因为Xcode版本不同,或者是SVN/Git使用导致 解决办法一: 删除冲突代码,"项目文件->Pod文件夹->Pods.xcodepr ...
- [视频]K8飞刀 一键免杀 IE神洞网马教程
[视频]K8飞刀 一键免杀 IE神洞网马教程 https://pan.baidu.com/s/16ZrTs
- Eruda 一个被人遗忘的调试神器
Eruda 一个被人遗忘的调试神器 引言 日常工作中再牛逼的大佬都不敢说自己的代码是完全没有问题的,既然有问题,那就也就有调试,说到调试工具,大家可能对于 fiddler.Charles.chro ...
- 课程三(Structuring Machine Learning Projects),第二周(ML strategy(2)) —— 0.Learning Goals
Learning Goals Understand what multi-task learning and transfer learning are Recognize bias, varianc ...
- 使用.NET Core与Google Optimization Tools实现加工车间任务规划
前一篇文章<使用.NET Core与Google Optimization Tools实现员工排班计划Scheduling>算是一种针对内容的规划,而针对时间顺序任务规划,加工车间的工活儿 ...
- mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具. mysqlbinlog的语法如下: mysqlbinlog ...
- python selenium 对浏览器标签页进行关闭和切换
1.关闭浏览器全部标签页 driver.quit() 2.关闭当前标签页(从标签页A打开新的标签页B,关闭标签页A) driver.close() 3.关闭当前标签页(从标签页A打开新的标签页B,关闭 ...
- Cordova安装、设置代理和引入插件
cardova代理 $ npm config --global set registry http://registry.cnpmjs.org cardova添加插件 格式:cordova plugi ...
- 嵌套函数变量修改nonlocal & 全局变量修改global
前几天在做一个简单的界面,单击Radiobutton保存字符串,在一个嵌套函数里面修改外部函数.一直不知道怎么修改,上网查了一下,搜关键字“嵌套函数修改变量”,找了好久,才得以解决. 对于python ...