티스토리 뷰
때때로 운영중인 사이트의 서버가 문제가생겼을때,
Ip를 변경할때 등의 이유로 서버점검페이지를 사용자에게 보여줘야할때가 종종 있기 마련이다.
tomcat과 nginx를 연동해서 사용하고있을때
어떻게 설정을 바꿔야하는지 알아보려한다.
1. Nginx.conf(기본)
vi /etc/nginx/nginx.conf
vim /etc/nginx/nginx.conf
nano /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf
}
1) user nginx : Nginx 프로세스가 nginx 사용자 및 그룹으로 실행되도록 지정하고, 사용자가 존재해야하며,
해당 사용자 권한으로 웹 서버가 실행된다.
2) error_log /var/log/nginx/error.log warn : 에어 로그의 경로를 설정하고, 로그 레벨을 지정한다.
3) pid /var/run/nginx.pid : Nginx 프로세스가 실행중일때, 해당 프로세스의 ID를 기록한다.
4) http { ~~ } : HTTP 서버 관련 설정을 해주는 블록이다. 이번 포스팅에선 이부분을 사용한다.
5) include /etc/nginx/mime.types : MIME 타입을 정의하는 파일을 포함한다.
서버 => 클라이언트에게 전송하는 파일의 타입을 정의한다
6. include /etc/nginx/conf.d/*.conf : /etc/nginx/conf.d/ 디렉토리 안에있는 모든 .conf파일을 포함시킨다.
=> 6번과 관련된 깊이 다루는건 추후에 진행할 예정이다.
2. Nginx.conf_ test
위의 기본설정(4)번을 세팅한다.
http {
include mime.types;
default_type application/octet-stream;
upstream tomcat {
server -----------:8080;
} # upstream end
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name ----------;
tcp_nopush on;
charset utf-8;
root D:\errorServer;
index index.html;
location / {
# charset ;
# proxy_http_version ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_set_header ;
# proxy_connect_timeout ;
# proxy_send_timeout ;
# proxy_read_timeout ;
# proxy_redirect ;
# proxy_pass ;
root D:\errorServer;
index index.html;
} # location end
1) upstream tomcat : 로컬에서 진행하는 톰캣의 내 IP : 포트번호를 입력한다
192.xxx.xxx.xxx + 8080 포트로 기본지정했다.
해당 ip,포트는 스프링 => 서버 더블클릭 => 설정에서 확인할 수 있다.
2) server{} 블록 :
listen 80 default_server / listen [::]:80 default_server : 서버가 80포트에서 IPv4,IPv6의 요청을 수신하도록 설정했다.
server_name xxx.xxx.xxx.xxx : 해당 IP주소에서 들어오는 요청만 처리하는 설정이다.
3) root 디렉토리 : 이 설정은 웹서버의 기본 root 디렉토리를 지정한다.
필자는 D드라이브에 errorServer이라는 파일을 생성했다.
또한 index index.html; : 해당 디렉토리 안에 index.html을 지정해줘서 기본 index.html 파일을 반환하도록했다.
4) location{~~} 블록 : 주석처리된 부분은 proxy설정이다.
proxy설정은 요청을 백엔드 서버로 전달하거나, 헤더를 설정하는 역할이지만,
root 설정 + proxy 설정을 같이 사용할 수 없다.
두개의 설정을 분리해서 처리하는 방법은
# 정적 파일을 제공하는 위치
location / {
root /var/www/html;
index index.html;
}
# 동적 요청을 백엔드 서버로 프록시하는 위치
location /api/ {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
동적/정적으로 분리해서 사용하는 방법이있지만,
이것 역시 추후에 다루기로하겠다.
위 location블록에 root 디렉토리 설정을 해주면,
톰캣을 실행했을때 Nginx에서 기본 디폴트 설정을해준 index.html이 열리게된다.
'Project > WWW' 카테고리의 다른 글
오픈API - 한국천문연구원_특일 정보 (0) | 2025.02.21 |
---|---|
게시판 조회 기능 (1) (0) | 2025.01.16 |
FlashMap["MESSAGE"] 적용 (0) | 2024.10.14 |
로그인 (Login)기능 (1) | 2024.08.30 |
회원가입(Join) 기능 추가 -2 (0) | 2024.08.30 |