OPENAI API(CHATGPT 등) Reverse Proxy 서버 구성

아래와 같이 nginx conf를 작성하면 새로 만든 도메인에서 openai api를 사용할 수 있다.
# 보통 /etc/nginx/sites-available/ 폴더에 있음
server {
listen 80;
server_name YOUR-DOMAIN.com *.YOUR-DOMAIN.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl; # managed by Certbot
server_name YOUR-GPT-SERVER-NAME;
ssl_certificate /YOUR-SSL-CERTI-PATH/fullchain.pem; # managed by Certbot
ssl_certificate_key /YOUR-SSL-CERTI-PATH/privkey.pem; # managed by Certbot
location ~* ^/v1/(models|chat/completions) {
proxy_ssl_server_name on;
proxy_pass https://api.openai.com;
proxy_set_header Host api.openai.com;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_buffering off;
proxy_read_timeout 300s;
}
# SSL 설정 (추가 권장 파라미터)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
}
nginx conf
설정 적용 절차
- NGINX 심볼릭링크 및 문법오류체크, 재시작
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
- NGINX 서비스 재시작
from openai import OpenAI
client = OpenAI(
base_url="https://gpt.ai-personalserv.com/v1",
api_key="YOUR_API_KEY"
)
# 모델 리스트 조회
models = client.models.list()
print(models.data)
# 채팅 완성 요청
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Explain quantum computing"}]
)
print(completion.choices[0].message.content)
주의사항:
- SSL 인증서 경로 확인 필요
- 429 Too Many Requests 오류 방지를 위해 요청 제한 적용 권장
이 설정을 통해 /v1
엔드포인트 하위의 모든 OpenAI API 기능(모델 조회, 채팅 완성, 임베딩 등)을 사용할 수 있습니다. 실제 운영 환경에서는 추가적으로 요청 제한 설정과 모니터링 기능 구현을 권장합니다.