nginx 加入了 http/2 的 server push 功能,學習 docker,就可以用 nginx 容器。萬一**改亂了,直接刪掉,再重啟乙個容器就可以了。
下面就是我搭建 nginx 容器的過程,以及如何加入 ssl 證書。你會看到 docker 用來測試軟體的新功能,真的很方便,很值得學習。如果你還不會 docker,可以先看《docker 入門教程》,非常簡單,半小時以內就能學會。
nginx 的最大作用,就是搭建乙個 web server。有了容器,只要一行命令,伺服器就架設好了,完全不用配置。
上面命令的各個引數含義如下。 如果沒有報錯,就可以開啟瀏覽器訪問 127.0.0.2:8080 了。正常情況下,顯示 nginx 的歡迎頁。$ docker container run \
-d \
-p 127.0.0.2:8080:80 \
--rm \
--name mynginx \
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
。
開啟瀏覽器,訪問 127.0.0.2:8080,應該就能看到 hello world 了。$ docker container run \
-d \
-p 127.0.0.2:8080:80 \
--rm \
--name mynginx \
--volume "$pwd/html":/usr/share/nginx/html \
nginx
修改網頁檔案還不夠,還要修改 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,如果能夠看到網頁,就說明本地的配置生效了。這時,可以把這個容器終止。
現在要為容器加入 https 支援,第一件事就是生成私鑰和證書。正式的證書需要證書當局(ca)的簽名,這裡是為了測試,搞一張自簽名(self-signed)證書就可以了。$ docker container stop mynginx
下面,我參考的是 digitalocean 的教程。首先,確定你的機器安裝了 openssl,然後執行下面的命令。
上面命令的各個引數含義如下。 執行後,命令行會跳出一堆問題要你回答,比如你在哪個國家、你的 email 等等。$ sudo openssl req \
-x509 \
-nodes \
-days 365 \
-newkey rsa:2048 \
-keyout example.key \
-out example.crt
其中最重要的乙個問題是 common name,正常情況下應該填入乙個網域名稱,這裡可以填 127.0.0.2。
回答完問題,當前目錄應該會多出兩個檔案:common name (e.g. server fqdn or your name) :127.0.0.2
example.key
和example.crt
。
conf
目錄下新建乙個子目錄certs
,把這兩個檔案放入這個子目錄。
有了私鑰和證書,就可以開啟 nginx 的 https 了。$ mkdir conf/certs
$ mv example.crt example.key conf/certs
首先,開啟conf/conf.d/default.conf
檔案,在結尾新增下面的配置。
然後,啟動乙個新的 nginx 容器。server
}
上面命令中,不僅映**容器的80埠,還映**443埠,這是 https 的專用埠。$ 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
開啟瀏覽器,訪問 。因為使用了自簽名證書,瀏覽器會提示不安全。不要去管它,選擇繼續訪問,應該就可以看到 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...