自从有了 docker 以后linux上面很多东西都变的很简单,nginx也不例外,这里我分享一个我的nginx的docker-compose的配置,以及nginx的ssl配置
附上我的https地址
nginx docker-compose.yml 配置
docker-compose
关于docker-compose,可以参考我的这篇文章
docker-compose.yml内容
version: "3"
services:
nginx:
restart: always
container_name: nginx
image: nginx
ports:
- 80:80
- 443:443
volumes:
- /usr/local/docker/nginx/conf.d:/etc/nginx/conf.d
- /usr/local/docker/nginx/log:/var/log/nginx
- /usr/local/docker/nginx/wwww:/var/www
- /usr/local/docker/nginx/etc/letsencrypt:/etc/letsencrypt
- /usr/local/docker/nginx/html:/usr/share/nginx/html
- /usr/local/docker/nginx/cert:/etc/nginx/cert
启动容器
docker-compose up -d
说明
- 我们的nginx配置文件在
/usr/local/docker/nginx/conf.d
这个目录 -
proxy_pass http://xxx.xxx.xxx.xx:8080;
这个的配置是有讲究的 这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的
nginx配置ssl
这一步也是超级简单的
1.在阿里上购买免费的SSL证书(当然你也可以买收费的,我买的是免费的)
购买链接:https://www.aliyun.com/product/cas (这不是广告)
2.下载证书
购买完证书,审核结束以后 , 开始下载证书 , 服务器类型记得选nginx , 然后我们就可以拥有xxxx.key 和 xxxx.pem 两个文件 , 将文件上传到我们服务器的
/usr/local/docker/nginx/cert
这个目录中
3.配置default.conf
其实这一步也是超级简单的,我直接贴上代码,在代码里面说明
server {
listen 80;
listen 443 ssl;#这个是https访问的端口
server_name k.lengff.xyz;#域名地址
#增加ssl
#ssl on; #如果强制HTTPs访问,这行要打开
ssl_certificate cert/klengff.pem;#你的xxxx.pem文件名称
ssl_certificate_key cert/klengff.key;#你的xxxx.key文件名称
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1.2;# 指定密码为openssl支持的格式
ssl_ciphers HIGH:!aNULL:!MD5; # 密码加密方式
ssl_prefer_server_ciphers on; #依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
location / {
#这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的
#因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径
#我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的
proxy_pass http://xxx.xxx.xxx.xx:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
}
网友评论