Contents

Nginx alias php-fpm File Not Found

Contents

今天接到一个需求,在同一个域名下,访问不同目录,达到访问不同php代码。我首先想到的是使用 nginx的 alias 来算是目录问题,配置后,发现 php-fpm 无法正确的访问 php 代码,于是单独给 location 配置了 php 解析器,具体配置如何:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    location /dir-02/ {
        alias /data/www/dir-02/;
        index index.php;
        # ThinkPHP 伪静态
        if (!-e $request_filename) {
          rewrite  ^(.*)$  /dir-02/index.php?s=/$1  last;
          break;
        }
        location ~ \.php$ {
            proxy_buffering off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            include fastcgi_params;
            # 这是放在 server 里面的 php 配置
            #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            # 注意需要将上面的$document_root$fastcgi_script_name 修改为 $request_filename
            fastcgi_param SCRIPT_FILENAME $request_filename;

            fastcgi_pass php_backend;
        }
    }