2017-02-09 8 views
1

私は簡単なことに固執しました。助けてください。 私は/ var/www/api /と/ var/www/api-beta /の2つのPHPプロジェクトディレクトリを持っています。 それぞれをPHP-FPMに転送したいと思います。 nginxの設定ファイル:NGINX、いくつかのローカルホストをPHP-fpmに転送

server { 
    listen 80; 
    set $doc_root /var/www/api; 
    root $doc_root; 
    index index.php index.html; 


    location /beta { 
      alias /var/www/api-beta; 
    } 


    location ~ \.php$ { 
     set $php_root /var/www/api; 
     if ($request_uri ~* /beta) { 
      set $php_root /var/www/api-beta; 
       } 

      fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
      fastcgi_index index.php; 
      fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
      include /etc/nginx/fastcgi_params; 


    } 
} 

私はif ($request_uri ~* /beta)でこれを行う試みたが、それはうまくいきませんでした。私は/ var/www/apiのプロジェクトがうまく動作するので、これは問題だと思いますが、/ var/www/api-betaからは "File not found"があります。エラー。

答えて

0

各PHPルートのlocationブロックを作成する方が簡単であってもよい。

server { 
    listen 80; 
    root /var/www/api; 
    index index.php index.html; 

    location ~ \.php$ { 
     try_files $uri =404; 

     include /etc/nginx/fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $request_filename; 
     fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    } 

    location ^~ /beta { 
     alias /var/www/api-beta; 

     location ~ \.php$ { 
      if (!-f $request_filename) { return 404; } 

      include /etc/nginx/fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME $request_filename; 
      fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
     } 
    } 
} 

  • 回避一緒にエイリアスとtry_filesを使用。 this long standing issueを参照してください。
  • ^~修飾子を使用すると、プレフィックスの位置が上記の正規表現の位置よりも優先されます。詳細については、this documentを参照してください。
+0

これは、thanx!私はPHPと同じディレクティブの場所を使用できると思っていました。 –

関連する問題