OPS

[Nginx.conf] http_x_forwarded_for IP가 안 보일 때, nginx reload와 restart 차이

찻잔속청개구리 2024. 3. 8. 00:24
반응형

Nginx의 로그 포맷은 아래와 같은 형식이다.

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

 

위 형식에서 $http_x_forwarded_for 설정도 추가되어 있지만 실제 로그에서 XFF 공인 IP가 안 찍힌다면 Directives 를 확인해봐야 한다.

 

아래와 같이 로그 포맷이 main으로 명시해 두었을 경우 엑세스로그 Directives도 main으로 설정한다.

이 경우 access_log {경로} main; 로 기재하면 된다.

nginx.conf 파일을 수정하고 나서 실제 적용하려면 systemctl nginx restart를 하거나 systemctl nginx reload를 반드시 해야 한다.

 

두 명령어 간 차이를 모른다면 잠시 짚고 넘어가겠다.

restart VS reload

  • restart : nginx를 중단 후 재기동 하기 때문에 서비스 순단이 발생한다.
  • reload : 설정 파일을 다시 불러오는 과정에서 자식 프로세스를 새로 만들고, nginx는 멈추지 않는다.

 

서비스 순단을 최소화 하기 위해 systemctl nginx restart를 진행하였다.

그 결과 로그 포맷 순서대로 엑세스 로그가 찍히게 되었다.

Nginx의 로그 포맷은 아래와 같은 형식이다.

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

위 형식에서 $http_x_forwarded_for 설정도 추가되어 있지만 실제 로그에서 XFF 공인 IP가 안 찍힌다면 Directives 를 확인해봐야 한다.

아래와 같이 로그 포맷이 main으로 명시해 두었을 경우 엑세스로그 Directives도 main으로 설정한다.

이 경우 access_log {경로} main; 로 기재하면 된다.

 

nginx.conf 파일을 수정하고 나서 실제 적용하려면 systemctl nginx restart를 하거나 systemctl nginx reload를 반드시 해야 한다.

두 명령어 간 차이를 모른다면 잠시 짚고 넘어가겠다.

 

restart VS reload

  • restart : nginx를 중단 후 재기동 하기 때문에 서비스 순단이 발생한다.
  • reload : 설정 파일을 다시 불러오는 과정에서 자식 프로세스를 새로 만들고, nginx는 멈추지 않는다.

다시 돌아가서, 서비스 순단을 최소화 하기 위해 systemctl nginx restart를 진행하였다.

그 결과 로그 포맷 순서대로 엑세스 로그가 찍히게 되었다.

반응형