使用Docker和Nginx部署Web服務(wù)的操作指南
前言
Docker是一種容器化技術(shù),它可以將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)獨(dú)立的、可移植的容器中。這意味著開發(fā)人員可以在任何環(huán)境中輕松部署和運(yùn)行他們的應(yīng)用程序,而無需擔(dān)心環(huán)境差異和依賴問題。而Nginx則是一款高性能的Web服務(wù)器和反向代理服務(wù)器,它可以處理大量并發(fā)請(qǐng)求并提供高可用性和負(fù)載均衡。Docker+Nginx是一種高效、靈活且可擴(kuò)展的解決方案。
在當(dāng)今快速發(fā)展的技術(shù)領(lǐng)域,C/C++、云原生、人工智能等前沿技術(shù)正引領(lǐng)著軟件工程的發(fā)展。作為后端開發(fā)人員,掌握J(rèn)ava、JavaScript、PHP、Python等編程語言是必不可少的。同時(shí),結(jié)合云原生的理念,將應(yīng)用程序容器化部署,能夠更好地適應(yīng)云環(huán)境的動(dòng)態(tài)性和彈性需求。使用Docker和Nginx可以幫助開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)快速部署和持續(xù)集成,提高開發(fā)效率和代碼質(zhì)量。
準(zhǔn)備工作
Docker環(huán)境安裝
這里簡(jiǎn)單講述下docker的安裝,可以通過官方提供的安裝腳本安裝
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
如果因?yàn)榫W(wǎng)絡(luò)問題無法正常安裝,也可以使用國內(nèi) daocloud 一鍵安裝命令
curl -sSL https://get.daocloud.io/docker | sh
啟動(dòng)docker
sudo systemctl start docker
這里推薦個(gè)比較好用的面板1Panel,我拿到云服務(wù)器后一般習(xí)慣先裝個(gè)1Panel,他安裝的同時(shí)也會(huì)把Docker 和Docker Compose安裝好,還是很方便的
部署Web應(yīng)用
1.拉取nginx鏡像
這里我們可以直接拉取最新版本
docker pull nginx
2.創(chuàng)建掛載目錄
接下來我們創(chuàng)建容器的掛載目錄文件夾,主要有三個(gè)目錄,目錄位置可根據(jù)自己的習(xí)慣調(diào)整
- nginx_logs :日志文件目錄
- nginx_conf :配置文件目錄
- nginx_web :項(xiàng)目文件目錄(這里可以存放web文件)
mkdir /root/nginx_conf mkdir /root/nginx_logs mkdir /root/nginx_web
授權(quán)文件夾,防止nginx操作文件夾權(quán)限不足
chmod 777 /root/nginx_conf chmod 777 /root/nginx_logs chmod 777 /root/nginx_web
3.創(chuàng)建容器并掛載目錄
掛載操作會(huì)直接將兩個(gè)文件夾內(nèi)容同步,若是直接用宿主機(jī)的空文件夾直接掛載到容器內(nèi)部的配置文件目錄上,會(huì)造成nginx容器配置文件目錄被同步為空文件夾,進(jìn)而導(dǎo)致容器啟動(dòng)失敗。故我們需要先啟動(dòng)一遍容器,將初始配置拷貝出來。
創(chuàng)建容器
docker run -itd --name nginx -p 80:80 nginx
復(fù)制容器配置文件到宿主機(jī)
docker cp nginx:/etc/nginx /root/nginx_conf
這樣就完成了配置文件的復(fù)制
刪除容器,啟動(dòng)容器并掛載目錄
這里的-v參數(shù)掛載目錄記得檢查一下路徑是否有誤
docker rm -f nginx docker run -itd --name nginx -p 80:80 -v /root/nginx_web:/var/www/html -v /root/nginx_conf/nginx:/etc/nginx -v /root/nginx_logs:/var/log/nginx nginx
4.修改配置文件
到掛載的配置文件夾/root/nginx_conf/conf.d下,修改default.conf,或者新建conf文件,在這個(gè)目錄下,conf后綴的文件都會(huì)被讀取為配置文件(因?yàn)?root/nginx_conf/nginx.conf中配置了include)
示例配置文件內(nèi)容如下
server{ #監(jiān)聽的端口號(hào) listen 80; #要監(jiān)聽的服務(wù)器地址,域名也可行,根據(jù)實(shí)際情況修改 server_name 154.111.111.111; client_max_body_size 20m; access_log /var/log/nginx/host.access.log main; #開啟gzip功能(這段可選,如果web界面資源有壓縮格式文件可開啟) gzip on; #開啟gzip靜態(tài)壓縮功能 gzip_static on; #gzip緩存大小 gzip_buffers 4 16k; #gzip http版本 gzip_http_version 1.1; #gzip 壓縮級(jí)別 1-10 r gzip_comp_level 5; #gzip 壓縮類型 gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #配置禁用gzip條件,支持正則。此處表示ie6及以下不啟用gzip(因?yàn)閕e低版本不支持 gzip_disable "MSIE [1-6]\."; #前端,根據(jù)實(shí)際情況修改 location / { # 項(xiàng)目地址,這里指的是nginx容器的地址 root /var/www/html/luckysj; try_files $uri $uri/ /index.html?s=$uri&$args; # 默認(rèn)訪問的資源 index index.html index.htm index.php; } # 錯(cuò)誤網(wǎng)頁配置 error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
5.上傳web文件到掛載目錄中
將你的web文件上傳到/root/nginx_web這個(gè)目錄中,如下
重啟nginx容器,使配置生效
docker restart nginx
6.訪問網(wǎng)頁測(cè)試
可通過ip+nginx設(shè)置的監(jiān)聽端口來訪問Web服務(wù),如http://1.1.1.231:80
若報(bào)錯(cuò)或者啟動(dòng)失敗,可查看日志排除錯(cuò)誤
docker logs nginx
域名配置
接下來我們講解如何配置域名,讓我們能通過域名(如www.baidu.com)訪問自己的網(wǎng)站
域名購入
域名購入的話可以去騰訊云,便宜的域名幾塊錢可以買一年
設(shè)置DNS解析
購買域名后還不能直接使用,需要設(shè)置DNS解析,將域名指向我們的服務(wù)器Ip
輸入Ip并保存解析
一般來說,成功設(shè)置解析后幾分鐘就會(huì)正常生效,可以嘗試通過ping 域名來確定是否成功解析
Nginx配置監(jiān)聽域名
這里只要把我們上面的配置中的server_name從ip改成我們的域名就可以了
#監(jiān)聽的端口號(hào) listen 80; #要監(jiān)聽的服務(wù)器地址,域名也可行,根據(jù)實(shí)際情況修改 server_name 你的域名;
重啟nginx容器,使配置生效,就可通過域名訪問網(wǎng)站啦~
docker restart nginx
SSL證書配置
為什么要配置SSL證書
當(dāng)我們沒有配置SSL證書訪問網(wǎng)頁時(shí),會(huì)發(fā)現(xiàn)地址欄左邊會(huì)提示不安全,這是由于http明文方式傳輸缺乏安全性,谷歌等主流瀏覽器也會(huì)對(duì)沒有安裝SSL證書的網(wǎng)站顯示“不安全”。
故我們需要配置SSL證書,從Http請(qǐng)求訪問網(wǎng)站改為Https請(qǐng)求訪問網(wǎng)站。
申請(qǐng)SSL證書
申請(qǐng)SSL證書可以去阿里云免費(fèi)申請(qǐng)SSL證書。一年可以申請(qǐng)20次,每次申請(qǐng)的證書有效期為三個(gè)月,也夠個(gè)人使用了。
申請(qǐng)SSL證書成功后,我們可下載該SSL證書的pem/key文件
上傳pem/key文件到服務(wù)器上,比如我上傳的位置為/root/nginx_conf/ssl目錄下
配置SSL證書
修改Nginx配置,轉(zhuǎn)發(fā)80端口請(qǐng)求,轉(zhuǎn)發(fā)至443端口
#以下為啟用SSL證書的配置 server { listen 80; #支持IPV6 listen [::]:80; server_name 你的域名; client_max_body_size 20m; access_log /var/log/nginx/host.access.log main; #開啟gzip功能 gzip on; #開啟gzip靜態(tài)壓縮功能 gzip_static on; #gzip緩存大小 gzip_buffers 4 16k; #gzip http版本 gzip_http_version 1.1; #gzip 壓縮級(jí)別 1-10 r gzip_comp_level 5; #gzip 壓縮類型 gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #配置禁用gzip條件,支持正則。此處表示ie6及以下不啟用gzip(因?yàn)閕e低版本不支持 gzip_disable "MSIE [1-6]\."; rewrite ^(.*) https://$server_name$1 permanent; }
443端口監(jiān)聽配置如下,主要注意的地方為ssl_certificate和ssl_certificate_key要改成你的文件名
server { listen 443 ssl; server_name www.luckysj.online; ssl_certificate /etc/nginx/ssl/你的pem文件; ssl_certificate_key /etc/nginx/ssl/你的key文件; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #自定義設(shè)置使用的TLS協(xié)議的類型以及加密套件(以下為配置示例,請(qǐng)您自行評(píng)估是否需要配置) #TLS協(xié)議版本越高,HTTPS通信的安全性越高,但是相較于低版本TLS協(xié)議,高版本TLS協(xié)議對(duì)瀏覽器的兼容性較差。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示優(yōu)先使用服務(wù)端加密套件。默認(rèn)開啟 ssl_prefer_server_ciphers on; location / { # 項(xiàng)目地址,這里指的是nginx容器的地址 root /var/www/html/luckysj; try_files $uri $uri/ /index.html?s=$uri&$args; # 默認(rèn)訪問的資源 index index.html index.htm index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
重啟nginx容器,通過域名訪問網(wǎng)站就會(huì)發(fā)現(xiàn)請(qǐng)求自動(dòng)變?yōu)閔ttps啦~
這里需要注意的是,如果你web服務(wù)改為了Https請(qǐng)求,那么web服務(wù)請(qǐng)求后端也需要通過Https協(xié)議,也就是后端服務(wù)也需要配置SSL證書服務(wù)(可通過nginx反向代理實(shí)現(xiàn),這里就不細(xì)講啦)
總結(jié)
本文簡(jiǎn)單的介紹了如何使用Docker和Nginx來部署和管理Web服務(wù),以及域名與SSL證書的配置,感謝您的觀看,有幫助就多多三連吧~
以上就是使用Docker和Nginx部署Web服務(wù)的操作指南的詳細(xì)內(nèi)容,更多關(guān)于Docker Nginx部署Web的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Docker容器中文亂碼(修改docker容器編碼格式)的解決方案
這篇文章主要介紹了Docker容器中文亂碼(修改docker容器編碼格式)的解決方案的相關(guān)資料,需要的朋友可以參考下2016-12-12docker安裝nacos并配置數(shù)據(jù)庫的全過程
這篇文章主要給大家介紹了關(guān)于docker安裝nacos并配置數(shù)據(jù)庫的相關(guān)資料, Nacos是SpringCloudAlibaba架構(gòu)中最重要的組件,Nacos 是一個(gè)更易于幫助構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置和服務(wù)管理平臺(tái),文中介紹的非常信息,需要的朋友可以參考下2023-09-09使用Docker鏡像構(gòu)建Go應(yīng)用的實(shí)現(xiàn)方法
本文主要介紹了使用Docker鏡像構(gòu)建Go應(yīng)用的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03快速修改docker容器的啟動(dòng)參數(shù)等信息
這篇文章主要介紹了快速修改docker容器的啟動(dòng)參數(shù)等信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03nerdctl替代docker及docker-compose的安裝使用
這篇文章主要為大家介紹了nerdctl替代docker及docker-compose的安裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06講解使用Docker搭建Java Web運(yùn)行環(huán)境
本篇文章詳細(xì)的介紹了使用Docker搭建Java Web運(yùn)行環(huán)境,想要學(xué)習(xí)docker的同學(xué)可以了解一下。2016-11-11