CloudFlare
生成证书
点击
创建
拷贝并保存
分别左边的证书拷贝命名成 cert.pem
, 把右边的 private key 命名为 key.pem
移动到指定位置
:::danger 下文中会创建一个 conf 目录, 在 conf 目录中创建一个 cert 目录, 并把这两个文件移动到里面就可以直接使用本文的 nginx 配置了. :::
Nginx Docker
启动 Nginx 容器
docker pull nginx:latest
docker run -d --name nginx nginx
mkdir conf
拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录
mkdir conf
docker cp nginx:/etc/nginx/nginx.conf $PWD/conf
docker cp nginx:/etc/nginx/conf.d $PWD/conf
docker cp nginx:/usr/share/nginx/html $PWD/conf
清理容器
docker container stop nginx
docker container rm nginx
:::
部署
docker run -d --network host -v /workspace/nginx/html:/usr/share/nginx/html -v /workspace/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /workspace/nginx/conf/conf.d:/etc/nginx/conf.d -v /workspace/nginx/logs:/var/log/nginx nginx
:::success
-d # 表示在一直在后台运行容器
—network host # 表示容器使用主机的网络及端口
—name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;
:::
下面是 conf/conf.d/default.conf
的配置该文件只有在 Docker run 之后才会在本机看到.
:::danger
将下面的 YOUR_DOMAIN
换成你的域名.
:::
server {
listen 80;
listen 443 ssl;
server_name YOUR_DOMAIN;
ssl_certificate /etc/nginx/conf.d/certs/cert.pem;
ssl_certificate_key /etc/nginx/conf.d/certs/key.pem;
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:10001;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 500m;
}
location /files {
proxy_pass http://localhost:9573;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
:::success
location /api 等 # 表示该路由重定向到本地的其他端口
root # 表示网站文件存放的位置
ssl_certificate /etc/nginx/conf.d/certs/cert.pem; #上文中保存的 cert.pem 文件的路径
ssl_certificate_key /etc/nginx/conf.d/certs/key.pem; # 上文中保存的私钥 key.pem 文件的路径
:::
最后的目录结构如图所示, 如果要代理自己的网页, 直接将网页文件替换 html
下的index.html
等文件即可
检测
访问你的域名, 尝试 http://你的域名
和 https://你的域名