docker部署nginx,配置SSL證書實現https
阿新 • • 發佈:2020-07-29
一、拉映象
#docker pull nginx
二、建立並啟動容器
docker run -p 8443:443 --name nginx8443 \ -v /usr/local/docker/nginx8443/html:/usr/share/nginx/html \ -v /usr/local/docker/nginx8443/logs:/var/log/nginx \ -v /usr/local/docker/nginx8443/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/docker/nginx8443/conf/cert:/etc/nginx/cert \ -v /etc/localtime:/etc/localtime \-d nginx
volume對映引數:
/usr/share/nginx/html:部署網站的根目錄
/etc/nginx/nginx.conf:nginx配置檔案
/etc/nginx/cert:證書存放目錄
說明:因為伺服器上的443埠已經被其他專案佔用,這裡使用8443埠來部署,記得開啟防火牆埠限制。執行時會報如下錯誤:
這是由於/etc/nginx/nginx.conf是目錄,卻被對映到檔案。只需要到/usr/local/docker/nginx8443/conf/目錄下刪除nginx.conf目錄,然後新建一個nginx.conf配置檔案即可,見第三步。
三、新增配置檔案
到/usr/local/docker/nginx8443/conf/目錄下刪除nginx.conf目錄,然後新建一個nginx.conf配置檔案,內容如下:
worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { 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; ssl on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_certificate /etc/nginx/cert/xxx.pem; #證書路徑 ssl_certificate_key /etc/nginx/cert/xxx.key; #請求認證 key 的路徑 server { listen 443; #監聽埠,ssl預設443埠。如果需要配置多個埠,可以繼續新增server,用不同的埠就行 server_name www.xxx.com; #伺服器域名,需要和申請的證書匹配 location / { root /usr/share/nginx/html; #網站根目錄,和容器建立時指定的位置一致 index index.html index.htm; } } }
新增完配置檔案後,重啟nginx容器,並檢查下日誌看是否有error。
#docker restart nginx8443
#docker logs nginx8843
四、測試
重啟容器,一切正常後,在/usr/local/docker/nginx8443/html目錄下,新建一個index.html,輸入hello world!,瀏覽器訪問https://www.xxx.com:8443,即可正常訪問。