nginx 配置rewrite

先说自己的情况,目前富乔使用的是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时,看正文下面的评论

时间: 2024-08-10 01:58:48

nginx 配置rewrite的相关文章

nginx 配置rewrite 笔记

nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ^~ /public/ { root /data/wwwroot/a.php.abc.cc; } location ^~ /public/ 表示匹配以 "/public/" 开头的url,匹配成功执行其中的内容,执行完毕后停止并退出. location / { root /data/ww

nginx配置rewrite

1. uri  和 url读取区别 区别就是URI定义资源,而URL不单定义这个资源,还定义了如何找到这个资源. 比如说,一个服务器上,到一个文件夹/网页的绝对地址(absolute path)就是URI. Nginx的rewirte是针对 uri的 不是url. 2. location的使用 location / { rewrite ^.*$ /index.php last; } # /是通用的目录 所有没有匹配的rewite的最后都会用/匹配 location ~ ^/asset/ { ro

Nginx配置rewrite过程介绍

创建rewrite语句 vi conf/vhost/www.abc.com.conf #vi编辑虚拟主机配置文件 文件内容 server { listen 80; server_name abc.com; rewrite ^/(.*) http://www.abc.com/$1 permanent; } server { listen 80; server_name www.abc.com; location / { root /data/www/www; index index.html in

【Nginx】Nginx配置REWRITE隐藏index.php

只需要在server里面加上 if ( !e $request_filename ) { rewrite ^/(.*)$ /index.php/$1 last; } 原文地址:https://www.cnblogs.com/BearLee/p/9520794.html

nginx配置访问控制、rewrite应用、nginx代理

一.访问控制 限制只让某个ip访问: allow 192.168.1.100; deny all; 限制只有本地地址可以访问,白名单: allow 127.0.0.1; deny all; 拒绝本地访问,黑名单: deny 127.0.0.1; allow all; deny all 直接拒绝所有,下面的allow就不生效了. [[email protected] vhosts]# vi default.conf server {     listen 80 default_server;   

Nginx配置的rewrite编写时last与break的区别详解

rewite 1. server块中的rewrite: 在server块下,会优先执行rewrite部分,然后才会去匹配location块 server中的rewrite break和last没什么区别,都会去匹配location,所以没必要用last再发起新的请求,可以留空. 2. location中的rewirte: 不写last和break -    那么流程就是依次执行这些rewrite 1. rewrite break -        url重写后,直接使用当前资源,不再执行loca

nginx配置location及rewrite规则重写

一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 [ c

nginx的rewrite配置

域名跳转(重定向).URL重写(伪静态).动静分离(跳转域名,并接入CDN实现加速)#依赖PCRE库#模块:ngx_http_rewrite_moduleRwrite相关指令#if (条件) { command } coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/if.md#break和last coding.net/u/aminglinux/p/nginx/git/blob/master/rewrite/break.md#retu

Nginx配置详解

Nginx配置文件主要分成四部分: main(全局设置)指令将影响其它所有部分的设置: server(主机设置)指令主要用于指定虚拟主机域名.IP和端口: upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡: location(URL匹配特定位置后的设置),每部分包含若干个指令.location部分用于匹配网页位置(比如,根目录"/","/images",等等). 他们之间的关系式: