應用場景
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器。
Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like協議下發行。其特點是占有內存少,并發能力強,事實上Nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用Nginx網站用戶有百度、京東、新浪、網易、騰訊、淘寶等。
本案例中,使用一臺Nginx做反向代理服務器,三臺Nginx做負載均衡的代理服務。因為使用用戶可能非常多,所以需要做負載均衡。后端使用天翼云的彈性文件服務。天翼云彈性文件服務用于存儲文件,如圖片、視頻、鏡像回源文件或者一些用戶的靜態數據等。不同的Nginx代理服務器之間共享訪問文件系統數據。
方案使用云產品
彈性文件服務,彈性云主機
方案架構
配置的架構如下圖:


準備工作
在開始之前需要創建一個虛擬機私有云VPC,一個文件系統,四臺云主機,其中一臺做反向代理服務器,三臺做負載均衡的代理服務。具體操作如下:
在需要操作的地域創建虛擬私有云VPC,具體操作步驟參見創建虛擬私有云VPC。
創建該VPC下的彈性云主機,操作系統為Linux,此處以CTyunOS 2.0.1為例演示,具體操作步驟參見創建彈性云主機。
創建該VPC下的文件系統,文件系統的協議類型為NFS,具體操作步驟參見創建文件系統。
操作步驟
步驟一:放開云主機TCP22330端口
登錄“控制中心”,點擊“計算>彈性云主機”進入彈性云主機控制臺頁面。
找到目標云主機,點擊名稱進入云主機詳情頁。
在詳情頁下方,點擊“安全組”頁簽,在該頁簽默認安全組下點擊“添加規則”,具體操作請參考添加安全組規則。

添加“入方向”規則,各參數選項如下圖。添加完成之后,在默認安全組下會顯示相應的規則。
重復以上步驟,對四臺云主機均放開22330端口。
步驟二:部署Nginx負載均衡代理服務
注意
操作都是以root賬號操作,云主機中沒有運行其他的進程,避免端口被占用。
在三個代理服務器的主機上掛載文件系統,安裝部署Nginx。
以root用戶登錄彈性云主機,登錄方式參考登錄Linux彈性云主機,執行如下命令,安裝NFS客戶端。
yum install nfs-utils -y等待安裝完成,執行如下命令,安裝Nginx。
yum install nginx -y執行如下命令,掛載文件系統到Nginx需要代理的目錄,參考掛載NFS文件系統到彈性云主機 (Linux)。掛載地址在文件系統詳情頁獲取,參考查看文件系統。
"/usr/share/nginx/html/"是需要掛載在本地主機的目錄,也是Nginx默認使用的代理目錄。
mount -t nfs -o vers=3,proto=tcp,async,nolock,noatime,nodiratime,noresvport,wsize=1048576,rsize=1048576,timeo=600 掛載地址 /usr/share/nginx/html/執行如下命令,為共享目錄下編輯一個index.html。
echo "Test for CT-SFS!" > /usr/share/nginx/html/index.html重復1-4步驟,對三臺Nginx都掛載同一個NFS文件系統。

執行
vi /etc/nginx/nginx.conf命令,在該文件中修改Nginx的默認端口80為22330,然后執行以下命令為每一個代理服務器啟動Nginx。
systemctl restart nginx驗證代理結果。若三臺Nginx代理服務都可以訪問index.html文件,則表示配置成功。在每一個代理服務器上使用curl命令驗證如下,其中{ip}為云主機的內網ip,可以在云主機詳情頁“彈性網卡”頁簽下獲取。
curl "//{ip}:22330"
在云主機詳情頁“彈性IP”頁簽下找到云主機的公網地址,并在瀏覽器上輸入“{公網IP地址}:22330",預期結果如下:


如網頁請求不通但是本地curl沒有問題,那么執行以下命令關閉防火墻:
systemctl stop firewalldsystemctl stop iptables
步驟三:部署Nginx反向代理服務
在第四臺云主機上安裝反向代理。
登錄第四臺云主機,執行如下命令,安裝Nginx。
yum install nginx -y執行如下命令配置反向代理的Nginx服務。
vi /etc/nginx/nginx.conf修改默認的http配置如下,其中192.168.xxx.xx為步驟二中三臺負載均衡服務器IP,即三臺云主機的內網IP,可以在云主機詳情頁“彈性網卡”頁簽下獲取,使用時注意替換。
http { upstream nfs { server 192.168.xxx.xx:22330; server 192.168.xxx.xx:22330; server 192.168.xxx.xx:22330; } server { listen 22330; location / { proxy_pass //nfs; } } }執行如下命令,啟動反向代理的Nginx服務。
systemctl restart nginx
步驟四:測試驗證
在第四臺云主機,即反向代理服務器上使用curl命令請求,其中{ip}為云主機的公網IP,可以在云主機詳情頁“彈性IP”頁簽下獲取。也可以使用內網IP,在云主機詳情頁“彈性網卡”頁簽下獲取。
curl "//{ip}:22330"

在瀏覽器上輸入“{公網IP地址}:22330",預期結果如下:


如網頁請求不通但是本地curl沒有問題,那么執行以下命令關閉防火墻:
systemctl stop firewalldsystemctl stop iptables