상세 컨텐츠

본문 제목

[Nginx] 리눅스 ubuntu 서버에 nginx 설치 및 설정 ( + 스프링부트 프로젝트 호출 연동)

develop/server

by devcon 2023. 5. 30. 03:29

본문

728x90
반응형
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서비스를 시작해보자

 

 

How to Start Nginx on Linux?

Nginx is one of the most popular high-performance web servers for the modern age. It is popular for hosting high-traffic and resource-intensive applications. Pronounced as “engine-x,” it is a lightweight and highly configurable web server or a reverse

linuxhint.com

 

nginx 서비스가 정상적으로 시작되었고 

Active의 값 역시 active로 변경 된 것을 확인 할 수 있다.

 

728x90

 

 

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 해주면 이제 내가 추가한 설정파일을 읽어오게 된다 


 
 

 

[springboot] 스프링부트 jar 빌드 & 서버에 배포 및 실행하기

오늘은 지난번에 스프링부트로 생성했던 프로젝트를 빌드해서 오라클클라우드 인스턴스에 만든 우분투 서버에 배포하고 실행해보자 내가 만든 프로젝트는 gradle을 이용한 프로젝트이고 빌드

devconq.tistory.com

 

이제 스프링부트 프로젝트와 연결해서 호출해보자

jar 파일에 대한 변경은 없었고, 

백그라운드에서 실행해두지 않아서  jar 파일을 실행해주었다.

스프링프로젝트 생성시 등록해줬던 맵핑주소인 'hello'를 호출해보면 

기본 80 포트이지만  8080포트에서 확인 할 수 있었던 리턴값을 브라우저에서 정상 확인할 수 있게 되었다.

8080포트로 호출한 모습

서버주소에 맵핑 주소만 붙여 호출했을 때는 response에서 서버로 nginx가 확인되었지만 

8080포트로 호출했을때는 nginx 서버는 확인이 되지 않는 것을 볼 수 있다.

80 포트로 호출했어도 서버쪽 로그에 8080 포트를 이용해 호출 했을때와 동일하게 로그가 남는 것도 확인이 가능하다.

 


 

 

여기까지 해서 

리눅스 우분투 서버에  nginx를 설치하고 설정을 추가하여 

스프링부트와의 연동까지 해볼 수 있었다

경량화 되어있지만 처리속도가 빠른 웹서비스에서는 nginx를 사용해보길 권하며 오늘은 여기까지!

728x90
반응형

관련글 더보기

댓글 영역