1 在Docker环境下的安装
1.1 下载nginx的docker镜像
1.2 拷贝容器nginx默认配置
| docker run -p 80:80 --name nginx -v /usr/local/docker/nginx/html:/usr/share/nginx/html -v /usr/local/docker/nginx/logs:/var/log/nginx -d nginx:latest |
| 复制代码 |
| docker container cp nginx:/etc/nginx /usr/local/docker/nginx/ |
| cd /usr/local/docker/nginx |
| mv nginx conf |
| 复制代码 |
| docker stop nginx |
| docker rm nginx |
| 复制代码 |
| cd /usr/local/docker/nginx/conf/conf.d/ |
| ls |
| 复制代码 |
![Docker安装nginx及配置nginx https域名]()
- 我这边以Minio对象存储为例子,新建minio.conf,配置如下
| server { |
| listen 443 ssl; |
| server_name www.example.top; |
| client_max_body_size 64M; |
| fastcgi_read_timeout 3600; |
| error_page 500 502 503 504 /50x.html; |
| root /usr/share/nginx/html; |
| try_files $uri $uri/ @rewrite; |
| |
| ssl_certificate /etc/nginx/conf.d/certs/www.example.top/example.pem; |
| ssl_certificate_key /etc/nginx/conf.d/certs/www.example.top/example.key; |
| ssl_session_timeout 5m; |
| ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
| ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; |
| ssl_prefer_server_ciphers on; |
| |
| location / { |
| add_header Content-Security-Policy upgrade-insecure-requests; |
| proxy_set_header HOST $host; |
| proxy_set_header X-Forwarded-Proto $scheme; |
| proxy_set_header X-Real-IP $remote_addr; |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| proxy_pass http://172.17.0.5:9001/; |
| } |
| } |
| 复制代码 |
- 证书需要自己生成或者购买第三方证书,下载下来放入/usr/local/docker/nginx/conf/conf.d/certs目录当中
- 同时我们修改默认配置default.conf,使用http自动转https
| server { |
| listen 80; |
| server_name www.sparksys.top; |
| |
| |
| |
| rewrite ^(.*)$ https://$host$1 permanent; |
| add_header Content-Security-Policy upgrade-insecure-requests; |
| location / { |
| root /usr/share/nginx/html; |
| index index.html index.htm; |
| } |
| |
| |
| |
| |
| |
| error_page 500 502 503 504 /50x.html; |
| location = /50x.html { |
| root /usr/share/nginx/html; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| } |
| 复制代码 |
重点在 rewrite ^(.*)
host$1 permanent;,实现https的自动转换
1.3 使用docker-compose部署启动
- 创建docker-compose.yaml文件,配置如下:
| version: '3.1' |
| services: |
| nginx: |
| image: nginx:latest |
| container_name: nginx |
| restart: always |
| ports: |
| - 80:80 |
| - 443:443 |
| volumes: |
| - /usr/local/docker/nginx/conf:/etc/nginx |
| - /usr/local/docker/nginx/logs:/var/log/nginx |
| - /usr/local/docker/nginx/html:/usr/share/nginx/html |
| 复制代码 |
我们需要暴露80和443端口,在这之前防火墙关闭或者开放80和443端口
![Docker安装nginx及配置nginx https域名]()
- 在浏览器输入域名网址
![Docker安装nginx及配置nginx https域名]()
到此docker&docker-compose部署nginx成功