[설치 환경]
- OS : Debian GNU/Linux 10 (buster)
- java : openjdk version "11.0.14"
- nginx 1.14.2
- Tomcat 10.0.17
[구성도]
우선 nginx에 대해 기본 사항들을 알아본다.
/etc/nginx/nginx.conf 파일은 어플리케이션의 기본 환경 설정 파일이다.
파일은 아래 내용으로 구성되어 있다.
Http 블록
http 블록은 웹 트래픽을 처리하는 디렉티프블을 담고 있으면서 Universal블록이라고도 하더라.
그리고 http 블록에서 사용되는 모든 디렉티브들은 nginx 문서에서 볼 수 있다.
/etc/nginx/nginx.conf 파일의 http 블럭에 보면 include 구문이 있는데 이 경로에 conf 파일을 생성하게 되면 환경파일로 인식한다. tomcat 과 연동하기 위해 이곳에 환경파일을 구성할 수 있다.
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
Server 블록
하나의 웹 사이트를 선언하는데 사용되고, 가상 호스팅의 개념이고 하나의 서버로 두 개를 동시에 운영하고 싶을 때 사용한다.
location 블록
server 블록 안에서 나오면서 특정 url을 처리하는 방법을 정의한다.
예를 들어서 http://localhost:80/login 과 http://localhost:80/join으로 접근을 다르게 하고싶을 때 사용되는데 이는 로드밸런싱에서도 나오니 주의깊게 봐두자.
events 블록
주로 네트워크의 동작 방법과 관련된 설정값들을 갖는다.
nginx 환경파일들에 대한 설명이다.
- nginx.conf : 어플리케이션 기본 환경 설정
- proxy.conf : 프록시 관련 환경 설정
- fastcgi.conf : FastCGI 관련 환경 설정
- mime.types : 파일 확장명과 MIME 타입 목록
nginx와 tomcat 연동 방법을 설명한다.
1방법) nginx 의 include 파일 설정
/etc/nginx/sites-enabled/default 설정 파일을 연다. default 파일에 아래 내용을 추가한다.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
nginx 서비스를 재기동한다.
$ sudo systemctl restart nginx
2방법) nginx 의 conf.d 디렉토리의 파일 설정
/etc/nginx 디렉토리 밑에
nginx.conf 파일의 내용 중 include /etc/nginx/sites-enabled/*; 부분을 #으로 주석 처리한다.
아래처럼 conf.d 경로에 환경파일을 정의할 내용을 추가한다.
본 문서에서는 tomcat.conf 파일 이름으로 생성했다.
$ sudo vi /etc/nginx/conf.d/tomcat.conf
upstream tomcat {
ip_hash;
server 127.0.0.1:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://tomcat;
proxy_redirect off;
charset utf-8;
}
}
* 참고 *
nginx 역할 구성