博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx 配置rewrite
阅读量:4320 次
发布时间:2019-06-06

本文共 2160 字,大约阅读时间需要 7 分钟。

先说自己的情况,目前富乔使用的是lnmp一键包,解决步骤如下:

1.打开/usr/local/nginx/conf/nginx.conf   文件,在server段中,access_log句子前加入以下代码

location /ck/cashier/ {

if (!-e $request_filename){
rewrite ^/ck/cashier/(.*)$ /ck/cashier/index.php?s=/$1 last;
}
}

其中/ck/cashier/  为二级目录,可根据自己的项目目录情况随意替换

 

2.由于看到nginx.conf中有一句这样的话  include enable-php.conf;  因此打开该文件查看

修改该文件为

location ~ [^/]\.php(/|$)

{
# try_files $uri =404;   这一句百度得知,其功能是替代url rewrite功能,因此需要注释,加入  include pathinfo.conf,才能使得第一步中的重写规则生效

fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}

3.lnmp  restart  重启生效

以上操作针对富乔生产环境配置有效,如果项目使用thinkphp框架,要记得将配置文件中的'URL_MODEL' =>'2'修改

 

如果采用nginx+php+mysql单独安装流程,可参考

http://www.nginx.cn/426.html  ,

按照图中教程,进一步说明:

首先,不需要将php.ini中的cgi.fix_pathinfo设置为1,富乔的生产环境中就改值为0

--------------------------------------------------------------------------------------------------------------------------------

其次,教程中说的以下两步,两步配置都需要进行操作,并不是二选一操作。也即是说,在配置url重写规则前,要配置nginx,使其支持pathinfo,然后url重写规则

         才能生效。总之一句话,nginx配置rewrite规则分两步:a.设置nginx支持pathinfo;b.编写url重写规则(),教程中第二步做的就是a;第一步做的就是b。

 

          (教程中的两步)1.可以通过rewrite方式代替php中的PATH_INFO   2.nginx配置文件中设置PATH_INFO值

         至于在富乔的生产环境当中,第二步并没有在nginx.conf中进行配置,是因为前面有一句include enable-php.conf,在该文件当中,会发现

         include pathinfo.conf这样的语句,而打开pathinfo.conf文件,发现其中操作,与教程步骤2的配置相似。

--------------------------------------------------------------------------------------------------------------------------------

最后,由于可能会经常使用到lnmp一键包,这些安装包特殊的地方是fastcgi_pass不是 127.0.0.1:9000,而是unix:/dev/shm/php-cgi.sock。因此,在设置       nginx 支持pathinfo的时候,需写成(以下代码主要注意fastcgi_pass的值,其他部分可参考上述第二步骤中的配置也可)

         location ~ \.php {

         #fastcgi_pass 127.0.0.1:9000; // pass 不是这个
         fastcgi_pass unix:/dev/shm/php-cgi.sock; // 而是这个
         fastcgi_index index.php;
         include fastcgi.conf;
         set $real_script_name $fastcgi_script_name;
         if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
         set $real_script_name $1;
         set $path_info $2;
         }
         fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
         fastcgi_param SCRIPT_NAME $real_script_name;
         fastcgi_param PATH_INFO $path_info;
         }

   以上参考http://www.thinkphp.cn/topic/3138.html   ,正文中是对nginx+php单独安装的情况下,进行的配置说明,使用lnmp时,看正文下面的评论

转载于:https://www.cnblogs.com/faster/p/5569641.html

你可能感兴趣的文章
Linux lsof详解
查看>>
子组件给父组件传数据
查看>>
unix/linux下的共享内存、信号量、队列信息管理
查看>>
Hilbert先生旅馆的故事
查看>>
采访吴岳师兄有感 by 王宇飞
查看>>
LVS简略介绍
查看>>
hdu 1021 Fibonacci Again
查看>>
JVM架构_XmnXmsXmxXss有什么区别:转
查看>>
PHPExcel 使用心得
查看>>
洛谷 P3374 【模板】树状数组 1(单点加,区间和)
查看>>
verilog 代码编写小记
查看>>
PyQT的安装和配置
查看>>
从 docker 到 runC
查看>>
守护进程
查看>>
php数组
查看>>
Linux 防火墙
查看>>
互联网金融P2P主业务场景自动化测试
查看>>
My third day of OpenCV
查看>>
Android的View和ViewGroup分析
查看>>
echarts.js中的图表大小自适应
查看>>