26814


Ubuntu 14.04 LTSのnginx(1.4.6)で以下のようなlocationのネストを行ったコンフィグで運用していたのですが、Ubuntu
16.04 LTS(nginx 1.10.0)に更新した所、fastcgi_passをphp7.0-fpm用に差し替えてもうまく動かなくなってしまいました。

動かない原因は`SCRIPT_NAME`へ/monitorがついたまま`SCRIPT_FILENAME`のパスが作られているためという所まではわかったのですが、`fastcgi_split_path_info`を`^/monitor(.+\.php)(/.+)$`のように設定しても`SCRIPT_NAME`の値が変化せず正しいパスを取得させることができません。  
できればシンボリックリンクを使わずnginx側だけでうまく設定したいのですが良い知恵はありますでしょうか。

[code]

    location /monitor { # cacti用
      alias /usr/share/cacti/site;
      index index.php;
    
      location ~ \.php$ {
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
    
        include fastcgi.conf;
      }
    }
    location /phpmyadmin { # LAN内専用phpmyadmin
      alias /usr/share/phpmyadmin/;
      index index.php;
      # もろもろ省略
    }
    
[/code]


CC BY-SA 3.0
2016-06-16T20:39:13.170
26802
2016-06-17T08:01:49.150
12404
question
php nginx ubuntu
nginx 1.10でサブディレクトリ毎に別々のphpを動かしたい


fastcgi_split_path_info の最後の `(/.+)` は必須なのでしょうか？  
以下のように *.php の後はあってもなくてもよいことにするとどうでしょうか。

[code]

    fastcgi_split_path_info ^/monitor/(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME /usr/share/cacti/site/$fastcgi_script_name;
    
[/code]


CC BY-SA 3.0
2016-06-17T08:01:49.150
26814
2016-06-17T08:01:49.150
4603
26802
answer