第一步拉取 nginx
docker pull nginx
在你想要的位置创建文件夹:
mkdir nginx && cd $_ && mkdir -p {ssl,config,logs}
可以通过xftp上传你的ssl证书到你刚刚创建的ssl目录
第二部:文件预加载
1.创建配置模板
这一步是先创建一个nginx容器,然后获取一个内部配置的模板,方便我们修改以后,等会重新启动启动一个容易指定挂载你修改后的配置
docker run --name nginx -p 80:80 -d nginx
2.copy文件
## 这三条代码不要同时执行,一行一行的来
docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/config/
docker cp nginx:/etc/nginx/conf.d /usr/local/nginx
docker cp nginx:/usr/share/nginx/html /usr/local/nginx
3.停止并删除容器
docker stop nginx
docker rm nginx
第三部:修改配置
打开我们刚刚copy出来的nginx/config下面的配置文件 nginx.conf
直接把我这段代码复制进去(已经配置了80强制跳转443)
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
client_max_body_size 100m;
include mime.types;
server {
listen 80;
server_name www.****.com; # 修改成你的网站域名
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl; # 1.1版本后这样写
server_name www.****.com; # 修改成你的网站域名
ssl_certificate /etc/nginx/ssl/****.pem; # 这里填写你的nginx内部映射地址 ,你只需呀吧****替换成你的域名证书名称就行了
ssl_certificate_key /etc/nginx/ssl/****.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;
ssl_session_cache shared:SSL:1m;
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/html;
try_files $uri $uri/ /index.html;
}
}
# 引入扩展配置(可以细分服务nginx)
include /etc/nginx/conf.d/*.conf;
}
最后启动容器
docker run --name nginx_yyfront -p 443:443 -p 80:80 -v /data/yyfront/nginx/dist:/usr/share/nginx/html -v /usr/local/nginx/config/nginx.conf:/etc/nginx/nginx.conf/ -v /usr/local/nginx/logs:/var/log/nginx/ -v /usr/local/nginx/ssl:/etc/nginx/ssl/ --restart=always nginx