2016-12-07 7 views
3

を発見していない私は、カスタムの場所との直接管理でnginxのconfのをしました:のDirectAdmin + nginxの+ PHPのFPM +場所:ファイル

コード:

location /reset-password { 
    alias /home/**/domains/**.**/public_html/api/frontend-scripts/resetPassword; 
    include /usr/local/directadmin/data/users/**/nginx_php.conf; 
} 

これが機能していません。 nginxは 'ファイルが見つかりません'と表示します。ブラウザ内のすべてのPHP関連ファイルに対してプレーンHTMLは正常に動作しています。

私はすなわち、他のいくつかの解決策を試してみた:

コード:

location /reset-password { 
    alias /home/**/domains/**.**/public_html/api/frontend-scripts/resetPassword; 
    # use fastcgi for all php files 
    location ~ \.php$ 
    { 
     try_files $uri index.php; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     include /etc/nginx/fastcgi_params; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include /etc/nginx/nginx_limits.conf; 
     if (-f $request_filename) 
     { 
      fastcgi_pass unix:/usr/local/php56/sockets/**.sock; 
     } 
    } 
} 

をそれらのすべてを与えている「が見つかりませんファイルを。」ブラウザに表示されます。

これはおそらくphpfpmと関係がありますが、私はオプションがありません。何が間違っているのですか?

答えて

2

aliasをPHPで使用している場合は、の文は有効ではなくなるため、常に問題があります。

あなたは使用することができます

fastcgi_param SCRIPT_FILENAME $request_filename; 

しかしopen bug in nginxは少し予測できないaliastry_filesを使用しています。

マイ好ましい溶液はroot directiveを使用することができるように目に見えないURIを書き換えることである:

location ^~ /reset-password { 
    rewrite ^/reset-password(.*)$ /resetPassword$1 last; 
} 
location ^~ /resetPassword { 
    root /home/**/domains/**.**/public_html/api/frontend-scripts; 
    ... 
} 

は、(^~改質剤が同じレベルで他の正規表現の位置ブロックよりも優先するthese prefix location blocksを引き起こすことに気づきます例えば別のlocation ~ \.php$ブロック)があるかどうかを確認します。

+0

リチャード、大変ありがとう、あなたのソリューションはすぐに使えました –

+0

ああ、あなたは救命獣です!今これと何時間も苦労しています。 fastcgi_paramがトリックをしました! – Araw

関連する問題