docker部署nginx,配置SSL證書實現https


一、拉鏡像

#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,即可正常訪問。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM