반응형
서론
이미지를 API 서버에 저장을 하고, 해당 이미지를 다른 서버에서 표출시키는 API를 java & spring boot로 개발했다. 그리고 해당 JAR 파일을 리눅스 백그라운드에서 nohup java -jar 명령어로 배포했다.
그런데 여기서 문제가 발생했다. 이미지를 해당 API 서버의 특정 경로에 저장을 시켰는데, URL로 다른 서버에서 불러오려고 하니 불러올 수가 없었다.
이처럼 프로젝트를 진행하다 보면 이미지 서버를 사용하는 경우가 많다.
파일을 해당 이미지 서버에서 다운로드하여서 보여주는 것보다, 이미지 서버에 있는 그 자체의 URL을 통해서 불러오는 것이 효율 적이다.
NGINX를 설치하고 웹서버로 올리고 몇 가지의 설정만 해주면 해결되었다.
Nginx란?
- Nginx는 경량 웹 서버입니다.
클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해 주는 HTTP Web Server로 활용되기도 하고,
Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 합니다.
- Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있습니다.
위의 그림에서 보이듯이 Nginx는 새로운 요청이 들어오더라도 새로운 프로세스와 쓰레드를 생성하지 않기 때문에 프로세스와 쓰레드 생성 비용이 존재하지 않고, 적은 자원으로도 효율적인 운용이 가능합니다.
이러한 Nginx의 장점 덕분에 단일 서버에서도 동시에 많은 연결을 처리할 수 있습니다.
Nginx 설정
🍁 Nginx 설치 - yum 이용 (centos7)
- 아래의 명령어로 Nginx 저장소를 추가한다.
sudo vi /etc/yum.repos.d/nginx.repo
- 해당 파일을 열어서 Nginx 공식 사이트에 있는 내용을 붙여 넣는다.
- 중간에 OS 항목과 OSRELEASE 항목을 자신의 OS에 맞게 변경해 주어야 한다. (필자는 아래와 같이 변경하였다)
[nginx]
name=nginx repo
#baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
- 저장소를 추가하였다면 설치를 진행한다.
sudo yum install -y nginx
- 방화벽에서 웹서버 포트를 개방한다.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
- Nginx를 실행시키고, 부팅 시 자동으로 시작되게 변경한다.
systemctl start nginx
systemctl enable nginx
Nginx 이미지 서버 설정
🍁 /etc/nginx/conf.d/nginx.conf 파일 수정
- nginx.conf 파일을 열어서 아래의 코드를 추가해 준다.
위의 경로(/upload)에 image파일을 넣어주면 된다.
url로 호출할 때는, /upload 뒤에 호출할 이미지 파일경로를 적어주면 된다.
예시 : http://{서버 url} /upload/20221021/16662449826824405.png
반응형
'Java' 카테고리의 다른 글
[React] .env 환경 구분 (prod / dev / local) (0) | 2022.10.21 |
---|---|
[Spring] Profiles - 환경 구분(dev / prod / local) (0) | 2022.10.21 |
[React] react.js 어플리캐이션 404 not found 에러 (Nginx 서버) (0) | 2022.10.20 |
[Spring] Front에서 보낸 데이터를 서버에서 받는 몇 가지 방법 (0) | 2022.09.27 |
[React] react-datepicker 라이브러리 (캘린더, 달력) (0) | 2022.09.02 |