CloudFlare

生成证书

进入 CloudFlare 界面

点击

image.png

创建

Nginx   CloudFlare 实现 SSL 部署应用 - 图2

拷贝并保存

分别左边的证书拷贝命名成 cert.pem, 把右边的 private key 命名为 key.pem
Nginx   CloudFlare 实现 SSL 部署应用 - 图3

移动到指定位置

:::danger 下文中会创建一个 conf 目录, 在 conf 目录中创建一个 cert 目录, 并把这两个文件移动到里面就可以直接使用本文的 nginx 配置了. :::

Nginx Docker

:::info

启动 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 :::

部署

  1. 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 换成你的域名. :::

  1. server {
  2. listen 80;
  3. listen 443 ssl;
  4. server_name YOUR_DOMAIN;
  5. ssl_certificate /etc/nginx/conf.d/certs/cert.pem;
  6. ssl_certificate_key /etc/nginx/conf.d/certs/key.pem;
  7. # gzip config
  8. gzip on;
  9. gzip_min_length 1k;
  10. gzip_comp_level 9;
  11. gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  12. gzip_vary on;
  13. gzip_disable "MSIE [1-6]\.";
  14. root /usr/share/nginx/html;
  15. include /etc/nginx/mime.types;
  16. location / {
  17. try_files $uri $uri/ /index.html;
  18. }
  19. location /api {
  20. proxy_pass http://localhost:10001;
  21. proxy_set_header X-Forwarded-Proto $scheme;
  22. proxy_set_header X-Real-IP $remote_addr;
  23. client_max_body_size 500m;
  24. }
  25. location /files {
  26. proxy_pass http://localhost:9573;
  27. proxy_set_header X-Forwarded-Proto $scheme;
  28. proxy_set_header X-Real-IP $remote_addr;
  29. }
  30. }

:::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 等文件即可
image.png

检测

访问你的域名, 尝试 http://你的域名https://你的域名
image.png