1

nginx 1.1.15 のバックエンドとして PHP-FPM を構成しています。PPH-FPM からのエラー用に 40x、50x エラー ページをカスタマイズする必要があります。

たとえば、php スクリプトから 403 ヘッダーを送信し、nginx にカスタム ページを表示させたいとします。次のように構成されたnginx:

    error_page  403 /403.html;
    location = /403.html {
        root   html;
        allow  all;
    }

しかし、php から 403 ヘッダーを送信すると、nginx はそれが私のカスタムではなく、ネイティブの「403 Forbidden」ページであることを示します。

アップ:すみません。nginx の完全な設定はしませんでした。nginx で 404 を処理し、すべてのクエリを単一のスクリプトに渡します。このスクリプトは 403 ヘッダーを送信します。そのため、nginx はカスタム 403 ページを表示しません。nginx conf の 404 ルールをバイパスするために既存のスクリプトを要求すると、カスタム エラー ページが返されます。これが私のnginx.confの一部です

    error_page 404 = @myhandler;

    location @myhandler {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME script.php;
        include fastcgi_params;
    }

    error_page  403 /403.html;
    location = /403.html {
        root   html;
        allow  all;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
        include        fastcgi_params;
    }

UPD:解決策を見つけました。

**recursive_error_pages on;**
error_page 404 = @myhandler;

location @myhandler {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME script.php;
    include fastcgi_params;
    **error_page  403 /403.html;**
}
4

0 に答える 0