1. Gitlab 소스 클론 이후 빌드 및 배포할 수 있도록 정리한 문서

  1. 사용한 JVM, 웹서버, WAS 제품 등의 종류와 설정 값, 버전(IDE 버전 포함) 기재

image.png

image.png

nginx 프록시 설정
/etc/nginx/sites-available/default
# HTTP 요청을 HTTPS로 리디렉션
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name i11c205.p.ssafy.io;

    # 모든 HTTP 요청을 HTTPS로 리디렉션
    return 301 https://$host$request_uri;
}

# HTTPS 요청을 처리
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name i11c205.p.ssafy.io;

    # Path to your SSL certificate and key
    ssl_certificate /etc/letsencrypt/live/i11c205.p.ssafy.io/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/i11c205.p.ssafy.io/privkey.pem;

    # 쿠키 설정
    proxy_cookie_path / "/; Secure; HttpOnly; SameSite=None";

    # Optional: Additional SSL configurations
#    ssl_protocols TLSv1.2 TLSv1.3;
#    ssl_ciphers 'ECDH+AESGCM:AES256+EECDH:AES256+EDH';
#    ssl_prefer_server_ciphers on;

    # React 애플리케이션을 Docker 컨테이너에서 프록시 설정
    location / {
        proxy_pass <http://localhost:7002>;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
    }

    # Spring 백엔드 API 요청을 Docker 컨테이너에서 프록시 설정
    location /api {
        proxy_pass <http://localhost:7001>;  # Spring Docker 컨테이너가 실행 중인 포트
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /swagger-ui/ {
        proxy_pass <http://localhost:7001/swagger-ui/>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # CORS 헤더 추가
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
    }

    location /v3/api-docs/ {
        proxy_pass <http://localhost:7001/v3/api-docs/>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # CORS 헤더 추가
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
    }

    location /oauth2 {
        proxy_pass <http://localhost:7001>;  # Spring Docker 컨테이너가 실행 중인 포트
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /api/process/ai {
        proxy_pass <http://localhost:7001>;  # Spring Docker 컨테이너가 실행 중인 포트
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

         # Timeout 설정
            proxy_connect_timeout 600s;
            proxy_send_timeout 600s;
            proxy_read_timeout 600s;
            send_timeout 600s;
    }
    # OpenVidu 서버 프록시 설정
    location /openvidu {
        proxy_pass <https://172.26.12.143:8443>;  # 내부 Nginx 서버의 IP 주소와 포트 (HTTPS)
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 설정 추가
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    location /dashboard {
        proxy_pass <https://172.26.12.143:8443>;  # 내부 Nginx 서버의 IP 주소와 포트 (HTTPS)
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket 설정 추가
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
    location /rembg {
        proxy_pass <http://localhost:5000>;  # rembg  서버의 IP 주소와 포트 (HTTPS)
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        client_max_body_size 20M;
    }
}

image.png

openvidu 설정 변경, 
docker-compose.yml 
nginx: environment   
						  #- PROXY_HTTP_PORT=${HTTP_PORT:-}
            - PROXY_HTTP_PORT=8080
              #- PROXY_HTTPS_PORT=${HTTPS_PORT:-}
            - PROXY_HTTPS_PORT=8443

image.png

IntelliJ : 2024.1.6 (Ultimate Edition)
Visual Studio Code : 1.92.1
Java : 17.0.12(BellSof Liberica)
Spring Boot : 3.3.1