生產環境docker部署之nginx部署

2021-10-03 15:34:26 字數 1899 閱讀 3457

網上由很多關於docker某種容器的部署命令,比如nginx部署,jar包部署,監控部署等。但個人感覺很多不能達到企業生產化的效果,比如長期執行後的日誌問題,容器的服務的配置等等。因此在這裡記錄一下。

nginx作為後端網關的入口,以及內部負載均衡的分發元件,在整個後端服務中是起非常重要的作用。說句題外話nginx對外的ip最好是彈性ip,這樣可以在ddos情況下快速的更換網域名稱ip,最快的速度保證服務恢復。

我習慣將容器名稱命名為3q-字首的方式名稱這些開源元件 。含義是感謝這些開源元件給我帶來的便利與價值。

宿主機新建nginx所需的所有目錄,下面都是目錄

/home/nginx/conf.d

/home/nginx/certs

/home/nginx/logs

/home/nginx/html

nginx配置檔案,/home/nginx/conf.d/default.conf

在nginx容器中/etc/nginx/nginx.conf作為主配置檔案,我們不去修改它,這個主配置檔案會引用/etc/nginx/conf.d檔案下的所有配置檔案,所以我們將所有的伺服器配置都在子配置檔案中,這樣由良好的拓展性,conf中的目錄是相對nginx容器中的/etc/nginx目錄為基礎

下面這個配置檔案是我常用的配置,作為nginx負載均衡。也包含ssl埠的配置

server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;

#server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;

}server }

certs證書配置

這只是模板,採用自建證書。測試瀏覽器https訪問需要受信任,有正式證書直接替換檔案即可

cd /home/nginx/certs

openssl genrsa -out ssl-default.key 2048

openssl req -newkey rsa:2048 -nodes -keyout ssl-default.key -x509 -days 365 -out ssl-default.pem

# 這裡網路模式配置為主機模式,以便用127.0.0.1訪問本機埠

docker run \

--restart=always \

--name 3q-nginx \

--network host \

-d -p 80:80 \

-p 443:443 \

-e "tz=asia/shanghai" \

-v /home/nginx/conf.d:/etc/nginx/conf.d \

-v /home/nginx/certs:/etc/nginx/certs \

-v /home/nginx/logs:/var/log/nginx \

-v /home/nginx/html:/home/www \

nginx

我相信網上不會有這麼到位引數配置. 這裡提醒一下,在負載均衡時,內網服務獲取客戶端真實ip,需要使用httpx-real-ip頭.

# 如果容器存在docker執行後自動啟動配置

docker update --restart=always 3q-nginx

作為生產端的nginx,不建議開放80埠應當只支援443埠強制加密訪問,作為負載均衡端,在內網環境下,不建議使用443埠加密,這會增加服務間呼叫成本。

docker部署 docker環境部署mysql

蘇軾 這裡我拉取了tag為5.7的映象 docker pull mysql 5.7因為需要自定義mysql的配置,所以需要乙個配置目錄 因為需要將mysql生成的資料掛載到本地,所以需要乙個資料目錄 建立mysql 資料目錄mkdir p root mysql data 建立配置檔案 touch r...

django生產環境部署

最近嘗試進行一些python web生產環境部署的任務。主要是使用django框架進行web開發。本地使用windows python3.7可是上到伺服器之後是ubuntu系統。ubuntu預設是python2和python3.5兩者都不符合現在的python開發版本。筆者嘗試進行了部署。一般來說,...

django生產環境部署

最近嘗試進行一些python web生產環境部署的任務。主要是使用django框架進行web開發。本地使用windows python3.7可是上到伺服器之後是ubuntu系統。ubuntu預設是python2和python3.5兩者都不符合現在的python開發版本。筆者嘗試進行了部署。一般來說,...