os: Ubuntu 22.04.2 LTS
nginx version: nginx/1.18.0 (Ubuntu)
💡 Nginx 설치
1. 패키지 업데이트
sudo apt update
2. Nginx 설치
sudo apt install nginx
3. Nginx 시작
sudo systemctl start nginx
4. Nginx 상태 확인
sudo systemctl status nginx
💡 SSL PEM 키
오픈 SSL 또는 발급받은 유료 SSL cer.pem이랑 kye.pem을 자신이 설정한 경로로 옮긴다.
나는 MobaXterm을 사용해서, ssl 폴더 자체를 커맨드 창을 이용해 해당 경로로 옮겼다.
MobaXterm에서 기본 경로는 /home/ubuntu 로 설정되어 있는 것 같다.
그래서 실제 폴더를 옮길 때는
sudo mv ssl /etc/nginx
이렇게 옮겼다.
ssl 디렉토리를 nginx 티렉토리 안으로 옮기기.
그럼 ssl 디렉토리의 최종 경로는 아래와 같다.
/home/ubuntu/etc/nginx/ssl
💡 Nginx 설정 파일 작성
- 서버의 동작 및 가상 호스트(Viretual Host)를 정의하는 데 사용됨
- /etc/Nginx/sites-availalbe/default
# upstream 블록 정의
upstream frontend-server {
server 0.0.0.0:80; # 프론트 서버 1 (apache2)
server 0.0.0.0:80; # 프론트 서버 2 (apache2)
}
server {
listen 80;
listen [::]:80;
server_name *.co.kr; # 대표 도메인
# HTTP에서 HTTP로 리다이렉션
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name *.co.kr; # 대표 도메인
ssl_certificate /etc/nginx/ssl/crt.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 512k;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 600s;
send_timeout 300s;
proxy_redirect off;
proxy_pass http://frontend-server; # 로드 밸런싱 위해 upstream 블록 사용
}
location = /favicon.ico {
return 204;
access_log off;
log_not_found off;
}
}
- proxy_http_version 1.1; : 프록시로 전송되는 HTTP 버전을 1.1로 설정함. HTTP/1.1을 사용하는 웹 서버와의 상호 작용을 나타냄
- proxy_set_header Upgrade $http_upgrade; : WebSocket 연결과 같은 업그레이드 가능한 연결에 대한 업그레이드 요청을 전달함. 이를 통해 업그레이드 가능한 프로토콜을 지원하는 서버와의 상호 작용이 가능해짐
- proxy_set_header Connection "upgrade" : 연결을 "업그레이드"로 설정하여 업그레이드 가능한 연결을 활성화함
- proxy_set_header Host $host; : 프록시 서버로 전달되는 요청 헤더에서 호스트 헤더를 설정함. 이것은 원격 서버로 요청을 전달할 때 호스트 정보를 유지하도록 함
- proxy_set_header ROMOTE_ADDR $remote_addr; : 원격 주소 정보를 전달함. 이는 원격 서버가 클라이언트의 IP 주소를 인식할 수 있게 함
- proxy_set_header X-Forwarded-Host $host; : 전달된 요청의 호스트 정보를 설정함. 이것은 프록시 서버를 거치는 경우 원격 서버가 호스트 정보를 올바르게 이해할 수 있도록 함
- proxy_set_header X-Forwarded-Server $host; : 전달된 요청의 서버 정보를 설정함. 이것은 프록시 서버를 거치는 경우 원격 서버가 서버 정보를 올바르게 이해할 수 있도록 함
- proxy_set_header X-Forwarded-For $Proxy_Add_x_forwarded_for; : 전달된 요청의 클라이언트 IP 주소를 설정함. 이것은 프록시 서버를 거치는 경우 원격 서버가 클라이언트의 IP 주소를 올바르게 식별할 수 있도록 함
- proxy_set_header X-Forwarded-Proto $scheme; : 전달된 요청의 프로토콜 정보를 설정함. 이것은 HTTPS와 같은 보안 프로토콜을 사용하는 경우 원격 서버가 이를 올바르게 인식할 수 있도록 함
- proxy_buffer_size 256k;, proxy_buffers 4 256k;, proxy_busy_buffers_size 512k; : 프록시 버퍼의 크기 및 관련 설정을 지정함. 이러한 설정은 프록시 서버의 버퍼 크기를 제어하며, 특히 대용량 파일을 프록시할 때 유용함
- proxy_connect_timeout 300s;, proxy_ssend_timeout 300s;, proxy_read_timeout 600s;, send_timeout 300s; : 프록시 연결 및 타임아웃 설정을 지정함. 각각 연결 제한 시간, 송신 제한 시간, 수신 제한 시간, 전체 요청 타임아웃을 설정함
💡 Nginx 재시작
1. 설정 파일 저장 및 심볼릭 링크 생성
이미 되어 있으면 할 필요 없음
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
2. 설정 파일 유효성 검사
sudo nginx -t
3. Nginx 재시작
sudo systemctl restart nginx
4, 오류 로그 확인
sudo tail -f /var/log/nginx/error.log
300x250
'PROJECT' 카테고리의 다른 글
[PROJECT] Maven to Gradle ~ing (0) | 2024.07.05 |
---|---|
[JAVA] 자바 계산기 만들기 (클래스 및 메소드 분리) (0) | 2024.04.17 |
[프로젝트] 인프라 windows & 우분투(ubutnu) 클러스터링 구성 재기록 (0) | 2024.02.05 |
[PROJECT] 클러스터링 구성 (0) | 2023.09.21 |
[JAVA] Make a calculator 계산기 만들기 (0) | 2022.02.07 |