Nginx 容器教程

2021-09-25 05:51:30 字數 4275 閱讀 2811

nginx 加入了 http/2 的 server push 功能,學習 docker,就可以用 nginx 容器。萬一**改亂了,直接刪掉,再重啟乙個容器就可以了。

下面就是我搭建 nginx 容器的過程,以及如何加入 ssl 證書。你會看到 docker 用來測試軟體的新功能,真的很方便,很值得學習。如果你還不會 docker,可以先看《docker 入門教程》,非常簡單,半小時以內就能學會。

nginx 的最大作用,就是搭建乙個 web server。有了容器,只要一行命令,伺服器就架設好了,完全不用配置。

$ docker container run \

-d \

-p 127.0.0.2:8080:80 \

--rm \

--name mynginx \

nginx

上面命令的各個引數含義如下。

如果沒有報錯,就可以開啟瀏覽器訪問 127.0.0.2:8080 了。正常情況下,顯示 nginx 的歡迎頁。

然後,把這個容器終止,由於--rm引數的作用,容器檔案會自動刪除。

$ docker container stop mynginx
網頁檔案都在容器裡,沒法直接修改,顯然很不方便。下一步就是讓網頁檔案所在的目錄/usr/share/nginx/html對映到本地。

首先,新建乙個目錄,並進入該目錄。

$ mkdir nginx-docker-demo

$ cd nginx-docker-demo

然後,新建乙個html子目錄。

$ mkdir html
在這個子目錄裡面,放置乙個index.html檔案,內容如下。

接著,就可以把這個子目錄html,對映到容器的網頁檔案目錄/usr/share/nginx/html

$ docker container run \

-d \

-p 127.0.0.2:8080:80 \

--rm \

--name mynginx \

--volume "$pwd/html":/usr/share/nginx/html \

nginx

開啟瀏覽器,訪問 127.0.0.2:8080,應該就能看到 hello world 了。

修改網頁檔案還不夠,還要修改 nginx 的配置檔案,否則後面沒法加 ssl 支援。

首先,把容器裡面的 nginx 配置檔案拷貝到本地。

$ docker container cp mynginx:/etc/nginx .
上面命令的含義是,把mynginx容器的/etc/nginx拷貝到當前目錄。不要漏掉最後那個點。

執行完成後,當前目錄應該多出乙個nginx子目錄。然後,把這個子目錄改名為conf

$ mv nginx conf
現在可以把容器終止了。

$ docker container stop mynginx
重新啟動乙個新的容器,這次不僅對映網頁目錄,還要對映配置目錄。

$ docker container run \

--rm \

--name mynginx \

--volume "$pwd/html":/usr/share/nginx/html \

--volume "$pwd/conf":/etc/nginx \

-p 127.0.0.2:8080:80 \

-d \

nginx

上面**中,--volume "$pwd/conf":/etc/nginx表示把容器的配置目錄/etc/nginx,對映到本地的conf子目錄。

瀏覽器訪問 127.0.0.2:8080,如果能夠看到網頁,就說明本地的配置生效了。這時,可以把這個容器終止。

$ docker container stop mynginx
現在要為容器加入 https 支援,第一件事就是生成私鑰和證書。正式的證書需要證書當局(ca)的簽名,這裡是為了測試,搞一張自簽名(self-signed)證書就可以了。

下面,我參考的是 digitalocean 的教程。首先,確定你的機器安裝了 openssl,然後執行下面的命令。

$ sudo openssl req \

-x509 \

-nodes \

-days 365 \

-newkey rsa:2048 \

-keyout example.key \

-out example.crt

上面命令的各個引數含義如下。

執行後,命令行會跳出一堆問題要你回答,比如你在哪個國家、你的 email 等等。

其中最重要的乙個問題是 common name,正常情況下應該填入乙個網域名稱,這裡可以填 127.0.0.2。

common name (e.g. server fqdn or your name) :127.0.0.2
回答完問題,當前目錄應該會多出兩個檔案:example.keyexample.crt

conf目錄下新建乙個子目錄certs,把這兩個檔案放入這個子目錄。

$ mkdir conf/certs

$ mv example.crt example.key conf/certs

有了私鑰和證書,就可以開啟 nginx 的 https 了。

首先,開啟conf/conf.d/default.conf檔案,在結尾新增下面的配置。

server 

}

然後,啟動乙個新的 nginx 容器。

$ docker container run \

--rm \

--name mynginx \

--volume "$pwd/html":/usr/share/nginx/html \

--volume "$pwd/conf":/etc/nginx \

-p 127.0.0.2:8080:80 \

-p 127.0.0.2:8081:443 \

-d \

nginx

上面命令中,不僅映**容器的80埠,還映**443埠,這是 https 的專用埠。

開啟瀏覽器,訪問 。因為使用了自簽名證書,瀏覽器會提示不安全。不要去管它,選擇繼續訪問,應該就可以看到 hello world 了。

Nginx 容器教程

春節前,我看到 nginx 加入了 http 2 的 server push 功能,就很想試一下。正好這些天,我在學習 docker,就想到可以用 nginx 容器。萬一 改亂了,直接刪掉,再重啟乙個容器就可以了。下面就是我搭建 nginx 容器的過程,以及如何加入 ssl 證書。你會看到 dock...

Nginx 容器教程

春節前,我看到 nginx 加入了 http 2 的 server push 功能,就很想試一下。正好這些天,我在學習 docker,就想到可以用 nginx 容器。萬一 改亂了,直接刪掉,再重啟乙個容器就可以了。下面就是我搭建 nginx 容器的過程,以及如何加入 ssl 證書。你會看到 dock...

nginx教程(二) nginx安裝教程

目錄 在開始之前 首先,安裝下編譯環境和安裝編譯原始碼所需要的工具和庫,執行命令 yum install gcc gcc c ncurses devel perl 否則,安裝安裝編譯時會報如下錯誤 建立目錄 mk usr local software package 然後進入 cd usr loca...