在Docker下部署Nginx


在Docker下部署Nginx

在Docker下部署Nginx,包括:

  • 部署一個最簡單的Nginx,可以通過80端口訪問默認的網站
  • 設置記錄訪問和錯誤日志的路徑
  • 設置靜態網站的路徑
  • 通過proxy_pass將HTTP請求反向代理到nodejs Web App
  • 設置HTTPS

如果你還沒有安裝Docker環境,可參考在Docker中運行Node.js的Web應用

最簡單的命令,讓Nginx跑起來

命令如下:

1
$ sudo docker run -it -p 80:80 dockerfile/nginx

如果是第一次,下載nginx鏡像需要點時間。

然后,可以通過瀏覽器根據地址訪問到一個默認的網頁,說明Nginx成功跑起來了。

設置記錄訪問和錯誤日志

Nginx有2個日志:

  1. access.log,記錄每個HTTP請求信息
  2. error.log,記錄Nginx運行中的錯誤,用於排錯

運行如下命令:

1
$ sudo docker run -it -p 80:80 -v `pwd`/logs:/var/log/nginx dockerfile/nginx

這個命令會在當前目錄下創建logs目錄,存放access.log和error.log。

設置靜態網站路徑

需要創建目錄:

  • config,目錄下放一個文件,名為server,Nginx靜態網站配置文件
  • www,目錄下放html文件,比如index.html

server文件:

1
2
3
4
5
6
7
8
server {
listen 80;

root /www;
index index.html index.htm;

server_name localhost;
}

命令如下:

1
sudo docker run -it -p 80:80 -v `pwd`/www:/www -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx

解釋一下:

  • -vpwd/www:/www,將當前路徑下的www目錄設置為/www,和server配置的路徑對應
  • -vpwd/config:/etc/nginx/sites-enabledserver文件的本地路徑,映射到docker容器的nginx配置路徑

設置反向代理到Nodejs Web App

需要先能將Nodejs的容器跑起來,然后再考慮怎樣通過Nginx的反向代理。

可參見在Docker中運行Node.js的Web應用

假設我有個express.js項目,在當前目錄下的webapp目錄中,使用docker命令類似這樣:

1
sudo docker run -d -p 3000:3000 --name ProtoWebApp -v `pwd`/webapp:/webapp -w /webapp node npm start

然后,將前面例子中config目錄下的server文件做點改動:

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;

#root /www;
#index index.html index.htm;

server_name localhost;

location / {
proxy_pass http://localhost:3000;
}
}

之后,用下面的命令將nginx跑起來:

1
sudo docker run -it -p 80:80 --link ProtoWebApp:localhost -v `pwd`/config:/etc/nginx/sites-enabled -v `pwd`/logs:/var/log/nginx dockerfile/nginx

設置HTTPS

只需在運行nginx容器的時候設置SSL的路徑:-v <certs-dir>:/etc/nginx/certs

當然,nginx首先要設置,參見配置HTTPS服務器


免責聲明!

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



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