Centos上利用Docker安装nginx 并且配置https
准备材料
1.一个域名(已经解析到下方服务器)
2.一个服务器
3.域名相关的ssl证书
下面就开始主要步骤
以下指令为 指定nginx的挂载目录
docker run --detach \
--name wx-nginx \
-p 443:443\
-p 80:80 \
-v /home/evan/workspace/wxserver/nginx/data:/usr/share/nginx/html:rw\
-v /home/evan/workspace/wxserver/nginx/config/nginx.conf:/etc/nginx/nginx.conf/:rw\
-v /home/evan/workspace/wxserver/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
-v /home/evan/workspace/wxserver/nginx/logs:/var/log/nginx/:rw\
-v /home/evan/workspace/wxserver/nginx/ssl:/ssl/:rw\
-d nginx
安装nginx 然后为nginx配置挂载目录启动
肯定有人问 为什么需要挂载目录,肯定是以后每次修改之后不需要通过指令进入nginx容器内部进行修改,极其方便。
- 1.下载镜像
docker pull nginx
- 2.创建上面指令的相关文件夹
如果你不想创建上面指定的挂载目录,那么就创建自己想要创建的,然后把目录修改一下
以下是我创建的目录 conf.d里面还有一个default.conf配置
- 3.创建完文件以后,就需要两个配置文件自行创建 下面是我的模板
nginx.config
#运行nginx的用户
user root;
#启动进程设置成和CPU数量相等
worker_processes 1;
#全局错误日志及PID文件的位置
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
#工作模式及连接数上限
events {
#单个后台work进程最大并发数设置为1024
worker_connections 1024;
}
http {
#设定mime类型
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
client_max_body_size 10m;
sendfile on;
#tcp_nopush on;
#设置连接超时的事件
keepalive_timeout 65;
#开启GZIP压缩
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
default.config
server { #监听443端口
listen 443 ssl;
server_name yuwenyou.cn; #域名
# 增加ssl
ssl on; #如果强制HTTPs访问,这行要打开
ssl_certificate /ssl/1_yuwenyou.cn_bundle.crt; #域名申请的ssl证书的nginx的crt文件存储路径
ssl_certificate_key /ssl/2_yuwenyou.cn.key; #域名申请的ssl证书的nginx的key文件存储路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# 指定密码为openssl支持的格式
ssl_protocols SSLv2 SSLv3 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5; # 密码加密方式
ssl_prefer_server_ciphers on; # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
# 定义首页索引目录和名称
#location / {
# root /usr/share/nginx/html;
# index index.html index.htm;
#}
location / {
proxy_pass http://xxxxxxx; #这里是需要代理的地址
index index.html index.htm index.jsp;
}
#重定向错误页面到 /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server{ #监听80端口
listen 80;
server_name yuwenyou.cn;
rewrite ^(.*) https://$host$1 permanent; #所有到达此处的连接转为https
}
- 4.创建完成以后就可以运行指令
docker run --detach \
--name mynginx \
-p 443:443\
-p 80:80 \
-v /home/evan/workspace/wxserver/nginx/data:/usr/share/nginx/html:rw\
-v /home/evan/workspace/wxserver/nginx/config/nginx.conf:/etc/nginx/nginx.conf/:rw\
-v /home/evan/workspace/wxserver/nginx/config/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw\
-v /home/evan/workspace/wxserver/nginx/logs:/var/log/nginx/:rw\
-v /home/evan/workspace/wxserver/nginx/ssl:/ssl/:rw\
-d nginx
以上就是全部配置挂载目录,以及配置文件的全部步骤
接下来说一下配置https的注意点
我是申请了腾讯云的域名,以及腾讯云的免费ssl证书,
在上面的default.config 文件中需要存储的ssl证书文件就在这里存储
# 增加ssl
ssl on; #如果强制HTTPs访问,这行要打开
ssl_certificate /ssl/1_yuwenyou.cn_bundle.crt; #域名申请的ssl证书的nginx的crt文件存储路径
ssl_certificate_key /ssl/2_yuwenyou.cn.key; #域名申请的ssl证书的nginx的key文件存储路径
下面就是我的存储路径
而下方这个则代表用域名进行访问nginx
server_name yuwenyou.cn; #域名
监听80端口的主要目的就是,将所有http的请求都转为https然后进入443端口
也就是下面这个
server{ #监听80端口
listen 80;
server_name yuwenyou.cn;
rewrite ^(.*) https://$host$1 permanent; #所有到达此处的连接转为https
}