전제 상황
- Nginx 로 서브 도메인을 걸어줌
- [ * ] 와일드 카드 ssl 인증서 발급
- 컨테이너로 proxy_pass 해줌
급한 사람을 위한 미리보기
- 버퍼 확장하기
- proxy_pass 확인하기
- dns cname/a 레코드 ip 주소 확인하기
- nginx를 재시작 했는지?
기존 코드
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name test2.servername.co.kr;
location / {
proxy_pass http://172.17.0.2:4000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name test.servername.co.kr;
location / {
proxy_pass http://172.17.0.2:4000 ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
해당 서버 인스터스는 테스트용 서버이기때문에, 백엔드 개발자가 각자 프로젝트를 테스트할 필요가 있었다.
때문에 server 객체를 두개로 만들고, server_name 으로 서브 도메인별, proxy를 걸어주었다. 이를 통해 한 서버 인스턴스에서 돌고있는 여러 도커 컨테이너로 분산시켜주었다.
*기존에 와일드 SSL 인증서를 발급했기 때문에 같은 경로에 있는 인증서를 불러왔다. 와일드 인증서가 아니라 각각 따로 발급받은 경우 경로를 잘 확인해야한다.
그러나 새로 붙여준 [ test.test.co.kr ] 에 들어가면 다음과 같이 502 bad gateway 오류가 떴다.
클라이언트 오류를 확인해본 결과, 서버 인스턴스 ip로 잘 찾아가 지나, strict-origin-when-cross-origin
에러가 헤더에 있는것을 볼 수 있었다.
1. 버퍼 확장하기
Nginx에서 요청을 받고, 서브도메인을 처리하는 시간 즉 버퍼가 부족해 생긴오류가 대다수라고 한다. 때문에 location 안에 buffer를 추가하는 코드를 넣어두었다.
*나의 경우 다른 개발자가 location이 아니라 엄한 곳에 buffer 확장 코드를 넣어 에러가 발생했다.
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name test.servername.co.kr;
location / {
proxy_pass http://172.17.0.2:4000 ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# location 안에 넣어줘야함
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
2. proxy_pass 확인하기
엄한곳으로 proxy 보낸것이 아닌지 잘 확인하자.
*나의 경우 다른 개발자가 proxy 경로를 잘못 적어 502 오류가 발생했다.
buffer 확장 코드 안넣어줘도 에러 해결이 되었음
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name test.servername.co.kr;
location / {
proxy_pass http://localhost:100 ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. dns cname/a 레코드 ip 주소 확인하기
서브도메인을 세팅하려면 cname이나 a레코드를 추가해 설정을해주어야한다. 혹시나 자기가 dns 설정할때 다른 오류가 없었는지 확인하자.
4. nginx를 재시작 했는지?
터무니없는 말 같지만, 정말 일어나는 일이다. 사람인지라 까먹고 restart 안하는 경우가 있기마련...
꼭 restart를 해 코드 최신화를 유지하자...!
# ngnix 오류 테스트 - syntax is ok
sudo nginx -t
# nginx 번경사항 업데이트 (재시작)
sudo service nginx restart
참고자료
- strict-origin-when-cross-origin 관련
- nginx 502 에러 관련
- 버퍼란?
- (Term) 버퍼(Buffer)란?
- [개념정리] 버퍼(Buffer)란? 버퍼 개념
- 간단히 말하자면, 임시 저장공간! 임시 저장 → 나중에 한꺼번에 cpu 처리
'Dev > 코딩공부 이모저모' 카테고리의 다른 글
Server ) RESTful API, 자주 사용하는 Status code 정리 및 예시 (0) | 2021.10.04 |
---|---|
Server ) Api Http status code에 대하여, header와 통일시켜야할까 body에만 담아야 할까? (0) | 2021.10.03 |
로직 ) 로그인, 메일 인증 (0) | 2021.09.25 |
CS ) ssh, sh, bash 란 뭘까? (0) | 2021.09.25 |
CS) 서버 OS 알아보기, CentOS, Linux, Ubuntu, Window (0) | 2021.09.05 |