SW/리눅스

ChatGPT : NGINX를 사용하여 OpenAI Reverse Proxy 설정

얇은생각 2024. 1. 9. 07:30
반응형

ChatGPT OpenAI NGINX를 사용한 역 프록시는 Janitor AI 또는 기타 서비스와 같은 애플리케이션에 원활하게 통합할 수 있도록 단계별 지침을 제공합니다.

AI 연구 분야의 저명한 리더인 OpenAI는 개발자들이 자신의 강력한 언어 모델을 활용할 수 있도록 하는 API를 제공합니다. 이 기사는 하위 도메인이 있는 우분투 22.04 머신에서 NGINX OpenAI 역 프록시를 설정하고 자유 SSL을 암호화하는 단계별 가이드를 제공할 것입니다. 이 설정을 통해 AI 기능을 효율적으로 여러분의 애플리케이션에 통합할 수 있습니다.

 

 

ChatGPT : NGINX를 사용하여 OpenAI Reverse Proxy 설정

 

 

OpenAI Reverse Proxy의 이점

OpenAI 역방향 프록시는 NGINX와 결합하여 다음과 같은 몇 가지 장점을 가지고 있습니다:

성능: 역방향 프록시를 구성하여 OpenAI API 응답을 캐싱하여 지연 시간을 줄이고 사용자의 전반적인 성능을 향상시킬 수 있습니다.

확장성: 역방향 프록시는 애플리케이션과 OpenAI API 사이의 중개 역할을 하여 AI 통합을 원활하게 확장할 수 있습니다.

보안: 역방향 프록시는 민감한 API 키를 보호하고 백엔드 인프라스트럭처를 외부의 직접 액세스로부터 보호함으로써 보안 계층을 추가할 수 있습니다.

 

 

전제조건

하위 도메인을 구성하고 SSL을 설치할 수 있도록 외부 IP가 있는 Linux distro가 있는 시스템입니다.

sudo 권한 또는 루트 액세스 권한을 가진 사용자입니다.

 

초기 설정

패키지를 사용 가능한 최신 버전으로 업데이트하는 것부터 시작합니다.

sudo apt update
sudo apt upgrade -y

 

 

OpenAI Reverse Proxy NGINX 설치

명령어 하나로 NGINX를 쉽게 설치할 수 있습니다.

sudo apt install nginx

 

아래 명령을 사용하여 NGINX 설치를 확인합니다.

sudo service nginx status

 

NGINX(활성 또는 실패) 상태의 출력이 표시됩니다.

 

 

NGINX를 사용하여 OpenAI Reverse Proxy 구성

이제 NGINX 설치와 함께 제공되는 기본 NGINX 구성을 제거해야 합니다.

sudo rm -rf /etc/nginx/sites-enabled/default
sudo rm -rf /etc/nginx/sites-available/default

 

OpenAI 역방향 프록시에 대한 새 구성을 만듭니다.

NGINX site-available 디렉토리 안에 새 파일을 만듭니다.

sudo nano /etc/nginx/sites-available/reverse-proxy.conf

 

 

아래 나열된 전체 구성을 편집기에 복사합니다.

아래 목록에 있는 것들은 반드시 교체해 주세요.

  • OpenAI 플랫폼에서 제공하는 OPENAI_API_KEY.
  • 도메인 이름과 함께 YOUR_DOMAIN_NAME.

 

/etc/nginx/sites-available/reverse-proxy.confproxy_ssl_server_name on;

server {
    listen 80;
    server_name YOUR_DOMAIN_NAME;

    proxy_set_header Host api.openai.com;
    proxy_http_version 1.1;
    proxy_set_header Host $host;

    proxy_busy_buffers_size   512k;
    proxy_buffers   4 512k;
    proxy_buffer_size   256k;

    location ~* ^\/v1\/((engines\/.+\/)?(?:chat\/completions|completions|edits|moderations|answers|embeddings))$ {
        proxy_pass https://api.openai.com;
        proxy_set_header Authorization "Bearer OPENAI_API_KEY";
        proxy_set_header Content-Type "application/json";
        proxy_set_header Connection '';
        client_body_buffer_size 4m;
    }
}

 

 

편집기를 저장하고 종료하려면 Ctrl + X를 누릅니다.

새로 생성된 NGINX 구성을 활성화합니다.

 

 

프록시 캐시 구성(옵션)

따라서 필요한 성능을 위해 캐싱을 구성할 수 있습니다. 당신은 단지 한 번의 클릭으로 코드를 바꾸기를 원할 뿐이다.

/etc/nginx/sites-available/reverse-proxy.confproxy_ssl_server_name on;

proxy_cache_path /server_cache levels=1:2 keys_zone=openai_cache:10m max_size=1g inactive=4d use_temp_path=off;

log_format cache_log '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" '
                    'Cache: $upstream_cache_status';
                    
server {
    listen 80;
    server_name YOUR_DOMAIN_NAME;

    proxy_set_header Host api.openai.com;
    proxy_http_version 1.1;
    proxy_set_header Host $host;

    proxy_busy_buffers_size   512k;
    proxy_buffers   4 512k;
    proxy_buffer_size   256k;

    location ~* ^\/v1\/((engines\/.+\/)?(?:chat\/completions|completions|edits|moderations|answers|embeddings))$ {
        proxy_pass https://api.openai.com;
        proxy_set_header Authorization "Bearer OPENAI_API_KEY";
        proxy_set_header Content-Type "application/json";
        proxy_set_header Connection '';
        proxy_cache openai_cache;
        proxy_cache_methods POST;
        proxy_cache_key "$request_method|$request_uri|$request_body";
        proxy_cache_valid 200 4d;
        proxy_cache_valid 404 1m;
        proxy_read_timeout 8m;
        proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
        proxy_cache_background_update on;
        proxy_cache_lock on;
        access_log /dev/stdout cache_log;
        proxy_ignore_headers Cache-Control;
        add_header X-Cache-Status $upstream_cache_status;
        client_body_buffer_size 4m; 
    }
}

 

 

OpenAI Reverse Proxy NGINX 구성 사용

sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf

 

 

NGINX 구성을 테스트합니다.

sudo nginx -t

 

 

변경 내용을 적용하려면 NGINX를 다시 시작합니다.

 

 

사용 가능한 SSL로 설정 보안

이제 설치하겠습니다. 자유 SSL을 암호화하고 요청을 안전하게 보호합니다.

아래 명령을 사용하여 Certbot을 설치합니다.

sudo apt install python3-certbot-nginx

 

 

이제 certbot 명령을 사용하여 SSL을 설치할 수 있습니다.

이메일과 도메인 이름을 실제 이름으로 바꾸십시오.

중요: 도메인이 서버의 IP 주소를 가리켜야 합니다. 그렇지 않으면 SSL 설치가 실패합니다.

sudo certbot --nginx --redirect --no-eff-email --agree-to-tos -m yourmail@mail.com -d yourdomain.com

 

 

이제 SSL이 설치됩니다.

 

 

 

NGINX를 사용하여 OpenAI Reverse Proxy 확인

이제 NGINX 서버가 OpenAI API로 작동하도록 구성되어 있습니다. 이것이 작동하는지 테스트하기 위해 v1/chat/completions URL을 형성할 수 있습니다.

아래 나열된 엔드포인트 중 일부입니다.

POST /v1/chat/completions
POST /v1/completions
POST /v1/edits
POST /v1/embeddings
POST /v1/moderations
POST /v1/answers

 

필요한 엔드포인트에 요청하면 요청한 대로 응답을 받게 됩니다.

 

 

결론

Ubuntu 22.04에서 NGINX를 사용하여 OpenAI API 역방향 프록시를 성공적으로 설정했습니다. 또한 API 키 및 요청을 보호하기 위한 보안 조치를 처리하기 위해 SSL을 설치 및 구성했습니다.

반응형