Nginx란?
Nginx 는 무료로 사용 가능한 오픈소스의 웹 서버로
빠르고 가볍게 경량화 되었고 , 고성능의 인기있는 다양한 운영 체제에서 사용 가능하다
메모링 사용량도 적고 처리속도가 빠르며,
웹서버, 리버스프록시, 메일프록시, 콘텐츠전송네트워크(CDN), 스트리밍 서버, 게임 서버 등 다양한 지원이 가능하다.
오늘은 리눅스 우분투 서버에
nginx 를 설치하고 스프링부트 프로젝트와 연결하여 호출해보자
apt 명령어를 통해 nginx를 인스톨해주자
계속 진행할거냐는 물음에 y를 입력하고 엔터
# 필요한 경우 업데이트 후 진행
sudo apt update
# nginx install
sudo apt install nginx
설치가 완료되는데 얼마 걸리지 않는다
잘 설치가 되었는지 일단 확인해보자
상태 확인을 해보면
아직 nginx 를 실행하지 않아
Active의 값이 inactive로 나타나고있다
# nginx 상태 확인
systemctl status nginx
# nginx 실행
sudo systemctl start nginx
sudo service nginx start #(init.d를 사용하는 경우)
# nginx 종료
sudo systemctl stop nginx
sudo service nginx stop #(init.d를 사용하는 경우)
이제 명령어를 통해 서버에서 nginx서비스를 시작해보자
nginx 서비스가 정상적으로 시작되었고
Active의 값 역시 active로 변경 된 것을 확인 할 수 있다.
nginx가 정상적으로 실행 되었다면
리눅스 서버의 80포트로 접속하면 다음과 같은 화면을 볼 수 있다
개발자도구를 통해 살펴보면
response 부분에 server에서 nginx가 보인다면 정상동작하고 있는 것이다.
다음으로 nginx의 설정파일 구성에 대해 간단히 살펴본 뒤
샘플 springboot 프로젝트와 연동하여 호출해보도록 하자
먼저 nginx가 설치된 경로를 확인해주자
특별히 설정을 하지 않고 설치한다면
/etc/nginx 경로에 설치가 되었을것이다
설치 경로로 이동하여 확인해보면
여러 파일들과 함께 몇개의 디렉토리가 같이 구성되어있는 것을 볼 수 있다.
# 경로 이동
cd /etc/nginx
# 설정파일 읽기 or 편집
cat nginx.conf #읽기
vi nginx.conf #편집가능
그중에서 nginx의 기본 설정 파일을 열어서 확인해보자
cat 이나 vi 명령어를 이용해서 설정파일을 확인해보면 된다
vi편집 모드로 여는 경우 수정이 되는 경우가 있으니 개인 편의에 맞춰서 파일을 오픈해보자
생략
......
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
......
생략
열린 파일의 하단부로 내려와서 보면 위와 같은 내용이 보인다
include로 시작하는 위의 부분은 해당 경로의 설정파일과 모든 파일을 포함하고 있어 불러오고 있음을 나타내고 있다.
실제 설정 파일은 configure의 약자를 갖는 conf 확장자 파일로 sites-available 디렉토리에 저장하고
이 파일들은 심볼릭 링크를 통해 sites-enabled에 있어야 정상적으로 불러올 수 있다.
심볼릭링크 란?
심볼릭 링크는 파일이나 디렉토리에 대한 참조를 포함하는 특별한 파일로,
원본 파일이나 디렉터리와 동일한 파일 시스템에 있어야 한다.
쉽게 말해 파일이나 디렉토리의 바로가기와 같은 역할을 하며
파일이나 디렉토리를 다른 위치로 이동하거나 복사하지 않고 다른 위치에서 사용할 수 있다.
# 커스텀 설정파일 생성
sudo vi /etc/nginx/sites-available/test.conf
# test.conf 내용
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
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;
}
}
일단 우리는 springboot의 8080 포트와 연결해주기 위해
80 기본포트로 들어왔을 때 8080포트로 프록시 연결을 해주는
간단한 conf 파일을 하나 생성해보자
sites-available 경로에 test.conf 로 명명하여 파일을 생성했고
vi를 통해 위의 내용을 간단하게 붙여 넣어 저장해주면 된다
잘 저장이 되었는지 명령어로 다시한번 확인해보니
복사 붙여넣기 한 내용이 잘 등록된 것을 확인 할 수 있다.
# 심볼릭링크 생성
sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled
#
ls -al
# 변경된 설정으로 nginx 재시작
sudo service nginx reload
생성해준 설정파일에 대해
앞서 설명한데로 심볼릭링크를 생성해주자
심볼릭링크를 생성하고 ls -al 명령어를 통해 확인해보면
생성된 심볼릭링크에 대해 타겟 경로도 같이 확인이 되는걸 알 수 있다.
# 기존 등록되어있던 심볼릭 링크 삭제
sudo rm -rf default
# default 심볼릭링크 필요한 경우 생성
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled
이제 일단 불필요한 default 심볼릭 링크는 삭제 후 진행해보자 (필요하다면 다시 생성가능)
default 심볼릭링크를 삭제했다면
nginx 서비스를 reload 해주면 이제 내가 추가한 설정파일을 읽어오게 된다
이제 스프링부트 프로젝트와 연결해서 호출해보자
jar 파일에 대한 변경은 없었고,
백그라운드에서 실행해두지 않아서 jar 파일을 실행해주었다.
스프링프로젝트 생성시 등록해줬던 맵핑주소인 'hello'를 호출해보면
기본 80 포트이지만 8080포트에서 확인 할 수 있었던 리턴값을 브라우저에서 정상 확인할 수 있게 되었다.
서버주소에 맵핑 주소만 붙여 호출했을 때는 response에서 서버로 nginx가 확인되었지만
8080포트로 호출했을때는 nginx 서버는 확인이 되지 않는 것을 볼 수 있다.
80 포트로 호출했어도 서버쪽 로그에 8080 포트를 이용해 호출 했을때와 동일하게 로그가 남는 것도 확인이 가능하다.
여기까지 해서
리눅스 우분투 서버에 nginx를 설치하고 설정을 추가하여
스프링부트와의 연동까지 해볼 수 있었다
경량화 되어있지만 처리속도가 빠른 웹서비스에서는 nginx를 사용해보길 권하며 오늘은 여기까지!
[PHP] wordpress(워드프레스) 설치를 위한 준비단계 - 리눅스(ubuntu+nginx기반) 서버에 php 8.0 설치 (0) | 2023.06.28 |
---|---|
[SSL] Let's Encrypt SSL 발급 & 리눅스 nginx 연동 (0) | 2023.06.23 |
[linux] ubuntu 서버에 mysql 간단 설치 (0) | 2023.05.18 |
[Cloud service]클라우드 프리티어 서비스 비교 (아마존, 오라클, 구글) (0) | 2023.05.18 |
[springboot] 스프링부트 jar 빌드 & 서버에 배포 및 실행하기 (0) | 2023.05.17 |
댓글 영역