自從有了 docker 以后linux上面很多東西都變的很簡單,nginx也不例外,這里我分享一個我的nginx的docker-compose的配置,以及nginx的ssl配置
附上我的https地址
nginx docker-compose.yml 配置
docker-compose
關于docker-compose,可以參考我的這篇文章
docker-compose.yml內(nèi)容
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的網(wǎng)絡問題,我們填127.0.0.1是不可行的因為127.0.0.1是docker容器內(nèi)的網(wǎng)絡,不是我們宿主機的網(wǎng)絡,所以就不能指向正確的路徑我們需要填內(nèi)網(wǎng)的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協(xié)議的服務器密碼將優(yōu)先于客戶端密碼
location / {
#這里需要說明一下,由于docker的網(wǎng)絡問題,我們填127.0.0.1是不可行的
#因為127.0.0.1是docker容器內(nèi)的網(wǎng)絡,不是我們宿主機的網(wǎng)絡,所以就不能指向正確的路徑
#我們需要填內(nèi)網(wǎng)的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;
}