배경: Google 클라우드 플랫폼에서 인스턴스 그룹을 설정하려고 합니다. 인스턴스 그룹은 단순히 들어오는 https 트래픽을 외부 사이트로 리디렉션하는 작업을 수행하는 여러 nginx 인스턴스로 구성됩니다. 들어오는 트래픽이 http인 경우 https로 변환됩니다.
인스턴스 그룹이 작동하려면 상태 확인 요청(http 또는 https 프로토콜)에 응답하고 200을 반환해야 합니다.
내가 가진 문제는 그러한 nginx 구성을 정의하는 방법입니다.
이번이 첫 컷이에요. 리디렉션만 처리합니다.
server {
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/examples.pem;
ssl_certificate_key /etc/nginx/ssl/examples.key;
server_name incoming.examples.com;
return 301 https://target.examples.com$request_uri;
}
http 프로토콜을 사용하여 상태 확인 URL을 '/_check'로 설정했습니다. 이것은 나의 첫 번째 시도입니다.
server {
listen 80;
location /_check {
return 200 'no content';
}
listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/examples.pem;
ssl_certificate_key /etc/nginx/ssl/examples.key;
server_name incoming.examples.com;
return 301 https://target.examples.com$request_uri;
}
nginx 서버는 404로 응답합니다.
location
그런 다음 다른 server
정의 로 이동하려고 시도했습니다 .
server {
location /_check {
return 200 'no content';
}
listen 80;
}
server {
listen 80;
listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/examples.pem;
ssl_certificate_key /etc/nginx/ssl/examples.key;
server_name incoming.examples.com;
return 301 https://target.examples.com$request_uri;
}
그것은 나에게 같은 결과를 준다. 이것이 액세스 로그에 표시되는 내용입니다.
130.211.3.85 - - [18/Jan/2017:08:41:25 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.81 - - [18/Jan/2017:08:41:29 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.1.249 - - [18/Jan/2017:08:41:30 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.85 - - [18/Jan/2017:08:41:30 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.81 - - [18/Jan/2017:08:41:34 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.1.249 - - [18/Jan/2017:08:41:35 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.85 - - [18/Jan/2017:08:41:35 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.3.81 - - [18/Jan/2017:08:41:39 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0"
130.211.1.249 - - [18/Jan/2017:08:41:40 +0000] "GET /_check HTTP/1.1" 404 168 "-" "GoogleHC/1.0
변경 사항을 첫 번째 시도로 되돌리고 상태 확인을 사용하도록 변경하면 https
(다음 스크린샷 참조)
대신 301을 얻습니다. URL이 _check
리디렉션 규칙에 의해 무시되는 것 같습니다 .
내 질문: 요구 사항을 충족하도록 nginx를 어떻게 수정할 수 있습니까?
답변1
다음에 표시된 대로 정의한 모든 포트에서 작동하도록 상태 확인을 설정할 수 있습니다.선적 서류 비치. 상태 확인을 생성할 때 UI 또는 명령줄을 사용할 수 있습니다.
$ gcloud compute health-checks create https NAME [--check-interval=CHECK_INTERVAL; default="5s"] [--healthy-threshold=HEALTHY_THRESHOLD; default=2] [--host=HOST] [--port=PORT; default=80]
플래그 PORT에서 원하는 것을 설정할 수 있습니다. 그런 다음 이에 응답하도록 앱을 구성해야 합니다.
server {
location /_check {
return 200 'no content';
}
listen [PORT];
이렇게 하면 상태 확인 요청이 나머지 트래픽과 함께 리디렉션되는 것을 방지할 수 있습니다.