#8 : NGINX
대부분의 서비스는 8080 포트가 아닌 80번 포트로 서비스를 한다. 80으로 사용 시 고정아이피:80으로도 사용 가능하고, 그냥 고정아이피 단독으로 포트번호를 생략 가능하다. 이는 80번 포트가 http 프로토콜의 기본 포트이기 때문이다.
01. 스프링부트를 80 포트로 서비스하기
- 스프링 부트 시작 시 포트번호 옵션을 추가
$ sudo java -Dserver.port=80 -jar sbb-0.0.2.jar
하지만 루트 권한으로 실행해야 한다는 단점과 SSL을 적용하여 https 서비스를 운영하기 쉽지 않기 때문이다. SSL을 적용하려면 Nginx나 Apache 같은 웹서버가 필요하다.
02. Nginx를 사용하여 80 포트로 서비스하기
Nginx는 높은 성능을 이해 개발된 웹 서버로 설정이 간단하다.
- Nginx 설치
ubuntu@jumpto:~$ sudo apt install nginx
- Nginx 설정
* /ect/nginx/sites-available 디렉토리 이동 (Nginx의 설정 파일 폴더, 최초 설치 시 default만 존재)
ubuntu@jumpto:~$ cd /etc/nginx/sites-available/
* Nginx 설정 파일 관리자 권한으로 작성
ubuntu@jumpto:/etc/nginx/sites-available$ sudo nano sbb
* sbb 파일의 내용
server {
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;
}
}
listen 80 : 웹서버 포트를 80번으로
server_name : 기본적으로 localhost를 입력하고, ip와 연결된 도메인을 구매했다면 해당 도메인명을 적어준다.
location / {...} : URL, 즉 모든 요청에 대한 설정 담당
ㄴ> proxy_pass : Nginx 웹서버의 모든 요청을 해당 주소로 리다이렉트
ㄴ> proxy_set_header : localhost:8080으로 실행된 스프링부트 서버에 특정 헤더 값을 전달하기 위해 사용
(Nginx를 통해서 스프링부트의 톰캣 서버로 요청이 전달되기 때문에 Remote IP 헤더 값이 실제 값이 아닌 127.0.0.1 처럼 잘못 전달되는 것을 방지)
- sbb 파일을 Nginx가 환경 파일로 읽을 수 있도록 설정
* /etc/nginx/sites-enabled 디렉토리 이동 (sites-available에서 설정 파일 중 활성화 하고 싶은 것을 링크로 관리)
ubuntu@jumpto:/etc/nginx/sites-available$ cd /etc/nginx/sites-enabled/
ubuntu@jumpto:/etc/nginx/sites-enabled$
* ls로 링크 확인
ubuntu@jumpto:/etc/nginx/sites-enabled$ ls
default
* default 링크 삭제
ubuntu@jumpto:/etc/nginx/sites-enabled$ sudo rm default
* sbb 파일 링크
ubuntu@jumpto:/etc/nginx/sites-enabled$ sudo ln -s /etc/nginx/sites-available/sbb
* ls로 sbb 링크 확인
ubuntu@jumpto:/etc/nginx/sites-enabled$ ls
sbb
- Nginx 실행
설치할 때 자동으로 실행되므로 앞에 작성한 설정을 적용하려면 재시작 해야한다.
ubuntu@jumpto:/etc/nginx/sites-enabled$ sudo systemctl restart nginx
* 설정 파일에 오류가 있는지 확인
ubuntu@jumpto:/etc/nginx/sites-enabled$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Nginx를 중지하기
ubuntu@jumpto:/etc/nginx/sites-enabled$ sudo systemctl stop nginx
Nginx 시작하기
ubuntu@jumpto:/etc/nginx/sites-enabled$ sudo systemctl start nginx
- SBB 작동 확인하기
* http://고정아이피/ 에 접속, 포트번호 생략이 가능해졌다.
'T-I-L > [책] 요약&정리' 카테고리의 다른 글
| [점프 투 스프링부트] 3장 SBB 서비스 개발(도메인) - 2023. 09. 20. (0) | 2023.09.21 |
|---|---|
| [점프 투 스프링부트] 3장 SBB 서비스 개발(로깅) - 2023. 09. 20. (0) | 2023.09.20 |
| [점프 투 스프링부트] 3장 SBB 서비스 개발(개발과 서버 환경 분리) - 2023. 09. 15. (0) | 2023.09.15 |
| [점프 투 스프링부트] 3장 SBB 서비스 개발(서버 스크립트) - 2023. 09. 14. (0) | 2023.09.14 |
| [점프 투 스프링부트] 3장 SBB 서비스 개발(추가기능, 서버, AWS 라이트세일, 서버 접속 설정, 서버 접속 프로그램, SBB 오픈) - 2023. 09. 13. (0) | 2023.09.13 |
