본문 바로가기
Web Server

[WEB] NginX - Tomcat 연동

by Haengsin 2022. 8. 12.

NginX-Tomcat

NginX 는 정적 페이지를 처리하고, Tomcat 은 동적 페이지를 처리한다. 이러한 역할 배분을 통해 더 빠른 응답을 기대할 수 있다.

Nginx의 장점
  • Apache와 달리 구성 시스템이 없어 빠른 속도
  • Request 에 대해 Event-Driven 방식으로 동작
  • 정적 파일에 대해 Apache 요청의 2배량을 제공
  • 2019년 4월 기준 Apache 사용량 추월

 

 

순서

(1) Tomcat 설치

(2) NginX 설치

(3) NginX 와 Tomcat 연동

 

 

NginX 설치

1. 패키지 관리자 업데이트

sudo yum update

2. NginX 설치

(1) Nginx 환경 설정

  • nginx repository 생성
  • vi /etc/yum/repos.d/nginx.repo에 아래 내용 생성
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

(2) nginx 설치

$ sudo yum install nginx

(3) 부팅 시 자동 실행 설정

  • 앞으로 계속 nginx 사용해야 하므로 편리함을 위해 자동 실행을 설정
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx

(4) web 접속 확인.

4. nginx 기본 환경 변수

(1) /etc/nginx

├── conf.d # nginx.conf 에서 불러들일수 있는 설정 파일
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf # 기본 설정 파일
├── proxy_params
├── scgi_params
├── sites-available # 가상 호스트 설정 파일들 위치
│   └── default
├── sites-enabled
│   └── default -> /etc/nginx/sites-available/default
├── snippets # nginx와 관련된 잡다한 설정파일들 위치 (ubuntu 에서는 여기에 위치시키는 것이 관례)
│   ├── fastcgi-php.conf
│   └── snakeoil.conf
├── uwsgi_params
└── win-utf

(2)  /etc/nginx/nginx.conf

# worker 프로세스를 실행할 사용자 설정
# - 이 사용자에 따라 권한이 달라질 수 있다.
user  nginx;
# 실행할 worker 프로세스 설정
# - 서버에 장착되어 있는 코어 수 만큼 할당하는 것이 보통, 더 높게도 설정 가능
worker_processes  1;

# 오류 로그를 남길 파일 경로 지정
error_log  /var/log/nginx/error.log warn;
# NGINX 마스터 프로세스 ID 를 저장할 파일 경로 지정
pid        /var/run/nginx.pid;


# 접속 처리에 관한 설정을 한다.
events {
    # 워커 프로레스 한 개당 동시 접속 수 지정 (512 혹은 1024 를 기준으로 지정)
    worker_connections  1024;
}

# 웹, 프록시 관련 서버 설정
http {
    # mime.types 파일을 읽어들인다.
    include       /etc/nginx/mime.types;
    # MIME 타입 설정
    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 api 를 사용할지 말지 결정
    sendfile        on;
    #tcp_nopush     on;

    # 접속시 커넥션을 몇 초동안 유지할지에 대한 설정
    keepalive_timeout  65;

    # (추가) nginx 버전을 숨길 수 있다. (보통 아래를 사용해서 숨기는게 일반적)
    server_tokens off

    #gzip  on;

    # /etc/nginx/conf.d 디렉토리 아래 있는 .conf 파일을 모두 읽어 들임
    include /etc/nginx/conf.d/*.conf;
}

 

Tomcat 설치

1. Tomcat 압축 파일 다운로드

  • 압축 파일은 임시 파일이므로 관리를 위해 /tmp/lib 폴더에 다운받는다
$ cd /tmp/lib
$ wget http://archive.apache.org/dist/tomcat/tomcat-9/v9.0.4/bin/apache-tomcat-9.0.4.tar.gz

 

 

2. Tomcat 설치

  • 압축 파일 해제
tar -xvf apache-tomcat-9.0.4.tar.gz

 

  • 사용자 로컬 폴더에 Tomcat 디렉토리 생성
sudo mkdir /usr/local/tomcat        // /usr/local 폴더는 애플리케이션 컴파일 설치 시 사용

 

  • Tomcat을 사용자 해당 폴더로 이동
sudo mv apache-tomcat-9.0.4/ /usr/local/tomcat

 

 

3. Tomcat 실행

/usr/local/tomcat/apache-tomcat-9.0.4/bin/startup.sh

+ 아래와 같은 ERROR  가 표시될 경우.

  • java 를 설치하지 않았고 JAVA_HOME 환경변수를 지정하지 않았기 떄문
  • OpenJDK 설치 및 JAVA_HOME 환경변수 등록하면 해결

 

4. Tomcat 실행 확인

  • Tomcat에서 기본 포트인 8080 LISTEN 확인
netstat -an | grep 8080

 

  • 브라우저에`http://서버IP주소:8080`입력하여 접속

 

 

NginX - Tomcat 연동

1. Nginx 설정 파일 수정

  • nginx.conf 혹은 default.conf 열기
    • root 사용자가 아닐 경우 sudo 명령어 사용하여 write 권한 줄 것
    • default.conf는 nginx.conf에서 포함하는 기본 설정
sudo chmod +w /etc/nginx/conf.d/default.conf
vi /etc/nginx/conf.d/default.conf
  • 다음과 같이 설정 파일 수정

 

 

2. Nginx 재시작

sudo systemctl restart nginx

 

 

3. 연동 확인

  • 웹 브라우저에 포트번호 지정없이 서버 IP 주소로 접속
  • nginx 화면이 아닌 Tomcat 화면이 나오면 완료

 

 

 

Reference

 

'Web Server' 카테고리의 다른 글

공부 정리  (0) 2021.12.06
[WEB] HTTP 1.0 과 HTTP 1.1 그리고 HTTP 2.0  (0) 2021.12.03
[WEB] Proxy - Forward Proxy & Reverse Proxy  (0) 2021.12.02
[WEB] DNS  (0) 2021.12.01
[WEB] SSL / TLS  (0) 2021.11.27