tkuchikiの日記

Linux やプログラミングについて書きます。

nginx の location に deny all; と return 200; を書くと return が優先される

server {
    listen       80 default_server;
    server_name  _;

    error_page 403 = @403_page;

    location / {
        deny all;
        return 200 "OK";
    }

    location @403_page {
        return 403 "Forbidden";
    }
}

と書いた時、403 Forbidden が返ってくるかと思っていましたが、
200 OK が返ってきました。
proxy_pass などを書いている場合は 403 Forbidden が返ってきたので、
return は deny よりも優先順位が高いようです。