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 よりも優先順位が高いようです。