# 각 서비스마다 처리하는게 아니기 때문에 ingress 리소스가 아닌 nginx-controller 에서 처리해야 된다.
# ingress-nginx configmap 적용이 필요하다.
# server-snippet(nginx.conf) 에서 에러코드의 로케이션을 설정한다.
# https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#server-snippet
# nginx-controller-configmap.yaml 작성
apiVersion: v1
kind: ConfigMap
metadata:
namespace: ingress-nginx
name: ingress-nginx
data:
server-snippet: |
# server 정보등 등과 보안 위험 노출 관련 응답 헤더에서 제거
more_clear_headers "server";
error_page 400 /custom_error_400.html;
error_page 401 /custom_error_401.html;
error_page 403 /custom_error_403.html;
error_page 404 /custom_error_404.html;
error_page 500 501 502 503 504 /custom_error_50x.html;
location = /custom_error_400.html {
# return 200 "<h2>Error</h2>\n";
default_type application/json;
return 400 '{"code":"400", "message": "bad request"}';
}
location = /custom_error_401.html {
# return 200 "<h2>Error</h2>\n";
more_set_headers "aaa: lemon" "bbb: apple";
default_type application/json;
return 401 '{"code":"401", "message": "unauthorized"}';
}
location = /custom_error_403.html {
# return 200 "<h2>Error</h2>\n";
more_set_headers "aaa: lemon" "bbb: apple";
default_type application/json;
return 403 '{"code":"403", "message": "forbidden"}';
}
location = /custom_error_404.html {
# return 200 "<h2>Error</h2>\n";
more_set_headers "aaa: lemon" "bbb: apple";
default_type application/json;
return 404 '{"code":"404", "message": "not found"}';
}
location = /custom_error_50x.html {
# return 200 "<h2>Error</h2>\n";
more_set_headers "aaa: lemon" "bbb: apple";
# nginx 기본 지시자
add_header test1 "test1";
add_header test2 "test2";
default_type application/json;
return 500 '{"code":"50x", "message": "server error"}';
}
# 적용
kubectl apply -f nginx-controller-configmap.yaml
# 이제 없는 페이지등의 에러인 경우 위에 설정한 에러 응답을 준다.
http://my.ysoftman.com/non-page.html
comments:
댓글 쓰기