- A+
使用nginx配置https需要使用到证书,可以去阿里云申请免费的https证书,有效期一年,一年过后可以再次申请。这里记录下如何使用Docker Nginx配置Springboot应用实现https。
证书文件
在阿里云申请证书后,下载对应的Nginx证书,如下文件
3808462__mxblog.com.cn.key
3808462__mxblog.com.cn.pem
下载Nginx
//下载nginx镜像
docker pull nginx
//启动nginx镜像
docker run --name mynginx -p 80:80 -idt nginx:latest
启动后,我们可以通过浏览器访问 当前IP+80端口号,验证ngnix,如下图。
修改nginx配置文件,支持https
nginx成功启动后,我们可以针对nginx的配置文件进行修改以支持https协议。
可以使用宿主机挂载nginx的方式进行启动nginx服务器。
//复制nginx配置文件到宿主机/home/admin/nginx/目录
docker cp mynginx:/etc/nginx/nginx.conf /home/admin/nginx/
docker cp mynginx:/etc/nginx/conf.d /home/admin/nginx/
创建cert目录,存放上述下载的证书文件。最终目录如下:
然后进行关键的一步,修改nginx.conf文件内容,配置如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
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;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
<!--配置ssl,开启https配置-->
server {
<!--确保对应的ecs开启443监听端口-->
listen 443 ssl;
<!--域名-->
server_name mxblog.com.cn www.mxblog.com.cn;
client_max_body_size 4M;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
<!--开启ssl配置-->
ssl on;
root html;
index index.html index.htm;
<!--证书文件-->
ssl_certificate /etc/nginx/cert/3808462__mxblog.com.cn.pem;
ssl_certificate_key /etc/nginx/cert/3808462__mxblog.com.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
<!--反向代理 对应的springboot应用地址-->
proxy_pass http://127.0.0.1:7001/;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name mxblog.com.cn www.mxblog.com.cn;
add_header Strict-Transport-Security max-age=15768000;
<!--访问http地址强制跳转https地址-->
return 301 https://$host$request_uri;
}
}
上述配置文件已经注释很清楚了,可以按照上述配置修改自己所对应的信息。域名、证书、反向代理地址、强制跳转等。
启动nginx
上述配置文件修改后,就可以启动nginx服务器进行验证了,启动之前首先要确保 springboot应用可以正常访问,也就是上述配置文件中的 127.0.0.1:7001
对应的应用页面是可以正常打开的。
使用如下docker脚本进行启动nginx
docker run -d \
-p 80:80 -p 443:443 \
--name nginx \
-v /home/admin/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/admin/nginx/conf.d:/etc/nginx/conf.d \
-v /home/admin/nginx/logs:/var/log/nginx \
-v /home/admin/nginx/cert:/etc/nginx/cert \
nginx:latest
稍加解释下脚本内容
-p 80:80 443:443 启动增加端口映射,这里需要映射80和443端口
--name 给nginx容器起一个名字
--v 挂载宿主机文件
这里挂载的文件都是上述准备好配置文件,nginx.conf、conf.d、cert、logs。日志目录,可以自行创建。
通过上述命令启动后,就可以使用对应的域名,进行https访问了。如下图
- 我的微信
- 加好友一起交流!
-
- 微信公众号
- 关注公众号获取分享资源!
-