Docker安装Nginx - 需要有域名
没有docker需提前安装docker,不知怎么安装的请自行百度。
1、拉取镜像
docker pull nginx
2、去阿里云或者其他云服务提供商申请免费证书,申请到之后下载下来,上传到服务器
# 创建nginx-proxy目录
mkdir nginx-proxy
# 创建ssl目录,存放证书
mkdir ssl
把证书上传到ssl目录下面,下面是ssl的目录结构/root/nginx/ssl
和上传的证书有两个文件一个.key
一个.pem
进入nginx-proxy目录cd /root/nginx/nginx-proxy
# 拷贝证书
cp -a /root/nginx/ssl ./
3、编写nginx.conf
在nginx-proxy目录`目录下面
vim nginx.conf
粘贴以下内容,注意修改证书名为自己的(转发规则根据自己的需求自定义)
worker_processes 1;events {worker_connections 1024;
}http {server {listen 80;server_name openAI;location /v1/ {proxy_pass https://api.openai.com;}}server {listen 443 ssl;server_name openAI;ssl_certificate /etc/nginx/ssl/自己的证书名.pem;ssl_certificate_key /etc/nginx/ssl/自己的证书名.key;proxy_buffering off;proxy_http_version 1.1;chunked_transfer_encoding on;proxy_ssl_server_name on;proxy_ssl_session_reuse off;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location /v1/ {proxy_pass https://api.openai.com;}}
}
为了支持流式输出,需要关闭代理缓存(上面已经加上了,不需要的话可以注释下面的三行代码)
proxy_buffering off;
proxy_http_version 1.1;
chunked_transfer_encoding on;
3、编写Dockerfile
编写镜像文件
vim Dockerfile
粘贴以下内容
FROM nginx:latestCOPY nginx.conf /etc/nginx/nginx.conf
COPY ssl /etc/nginx/ssl
完事以后nginx-proxy
目录下面结构如下
4、创建镜像并运行测试
构建镜像
docker build -t custom-nginx .
镜像构建完之后,docker images
查看镜像如下,可以看到custom-nginx镜像
运行custom-nginx镜像
docker run -d -p 19980:80 -p 19981:443 --name custom-nginx custom-nginx
docker ps
查看运行的容器
去浏览器测试https://自己的域名:19981/v1/text
能不能转发,出现下面的情况表示转发成功(注意:有防火墙或者安全组的话需要打开才行)
测试结果
14:32:07.353 [OkHttp https://xxxxxxxxxxx:19981/...] INFO com.unfbx.chatgpt.sse.ConsoleEventSourceListener - OpenAI返回数据:{"id":"chatcmpl-7PPxCx8loyVUsYRr4dCO35mypX06f","object":"chat.completion.chunk","created":1686292322,"model":"gpt-3.5-turbo-0301","choices":[{"delta":{"content":"时间"},"index":0,"finish_reason":null}]}