3

カスタムの場所を使用して、Direct Admin に nginx conf があります。

コード:

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と関係がありますが、私には選択肢がありません。私は何を間違っていますか?

4

1 に答える 1

2

ステートメントが無効になるため、PHP での使用aliasには常に問題があり$document_root$fastcgi_script_nameます。

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

fastcgi_param SCRIPT_FILENAME $request_filename;

しかし、未解決のバグnginxtry_filesによりalias、少し予測不可能な使用が可能になります。

私の推奨する解決策は、URI を見えないように書き換えて、rootディレクティブを使用できるようにすることです。

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

また、^~修飾子により、これらの接頭辞ロケーション ブロックが、同じレベル (別のlocation ~ \.php$ブロックなど) にある他の正規表現ロケーション ブロックよりも優先されることに注意してください。

于 2016-12-07T09:30:48.183 に答える