1. 程式人生 > >在阿里雲、微軟Windows Azure、亞馬遜AWS 上使用Nginx配置http正向代理伺服器

在阿里雲、微軟Windows Azure、亞馬遜AWS 上使用Nginx配置http正向代理伺服器

作為一個完全的Linux和Nginx雙料白痴,我覺得有必要把這幾天的折騰整理一下,以備以後檢視。

首先我接到的是5檯安裝好Linux的雲主機,兩臺阿里雲,兩臺Azure和一臺AWS。(包括雲主機IP,主機名,使用者名稱和密碼)

我要做的事情:

第一步:登入雲主機。

網上查很多人推薦使用Putty,這裡我們老大推薦我是使用X Manager Enterprise 4。

安裝好以後開啟


執行xshell,建立一個新連線。點選選單欄File中的“New”,開啟新建會話視窗,在視窗右側“Name”中填入”主機名“,“Host”中填入“雲主機IP”,其他保持預設,點選“OK”。


點選OK後會彈出如下窗體,並多出一個選項(紅框中)


雙擊上圖紅框中的新增項彈出


輸入使用者名稱,為了方便下次直接進入,選上記住使用者名稱複選框。點選OK。窗體消失。選擇File—Open彈出以下窗體窗體消失。選擇File—Open


雙擊剛才的新增項,彈出以下窗體


填入密碼,選擇記住密碼,點選OK。登入成功。


說明:登入雲主機有兩種方式,一個是上面說的使用者名稱密碼方式,另一種是公鑰,私鑰的方式。為了方便運維的同學幫我將這5太雲主機的遠端登入方式都改成了使用者名稱密碼方式。如果選擇公鑰私鑰方式,是沒有辦法輸入密碼的。

第二步:檢視當前Linux版本資訊。

因為本小白從網上查得配置nginx大多是基於某一版本的Linux的,所以我就想了解下本與主機的Linux版本。

使用命令:lsb——release -a


我這裡安裝的是CenOS 6.5。據說CenOS也是伺服器端使用的最多的Linux版本。

第三步:安裝Nginx。

Nginx的安裝方式有編譯安裝,yum安裝等,這裡我們老大要求使用yum安裝的方式。

首先需要檢查一下,雲主機裡有沒有Nginx安裝檔案。

命令:yum list | grep nginx


如上圖所示,我的cenos 裡是有nginx安裝包的(因為我已經安裝完了,不可能沒有啊,哈哈)

說明:經查詢 ,我的的兩臺阿里雲裡有nginx安裝包,Azure和AWS中沒有,不知道阿里雲中的是不是運維同學幫忙下好的。而且有的安裝教程上第一步是yum update,yum uodate的作用是升級現有的軟體和核心。可以不升級,AWS上的Linux版本跟其他4臺不一樣是Red Hat6.6,我不確定是不是運行了yum update造成的。

如果主機中有nginx安裝檔案,執行命令:yum install nginx

安裝完成後執行 :sudo service nginx start 會顯示[OK]的字樣。

最後在瀏覽器輸出ip 測試一下,如果出現nginx 的歡迎頁面,代表已經成功了。 如果不成功,執行sudo nginx -t 檢視配置檔案是否有錯,如沒錯會出現:
說明:這一命令需要root許可權才能正確執行,所以前面加sudo 點選回車後會提示輸入密碼,重新輸入密碼即可。
如果配置檔案有問題,怎根據提示修改配置檔案,或者檢視錯誤日誌。不過一般情況下新安裝的nginx配置檔案沒有修改過,不會有問題,只有修改過的才可能出錯。 (CenOS6.5下安裝的nginx預設主配置檔案的路徑是: sudo vi /etc/nginx/nginx.conf sudo是以root許可權執行 vi是編輯器,後面我會介紹用到的vi中的幾個命令。) 既然配置檔案基本不會出錯,如果看不到歡迎介面的話,有可能是防火牆的問題。 關閉防火牆 命令:sudo service iptables stop 至此,Nginx已經全部配置安裝完成。
第四步:配置Nginx http正向代理 首先找到主配置檔案,上文中提到過 sudo vi /etc/nginx/nginx.conf
這是用vi編輯器開啟,點“i”進入編輯狀態,否則看不全,一直下拉會找到紅框中的檔案路徑,這個路徑下的檔案就是我們要配置的檔案。 複製路徑/etc/nginx/conf.d/ 退出編輯器。下面我說一下這裡用到的幾個vi編輯器中命令。 1、i --進入編輯狀態 2、Esc --退出編輯狀態 3、:q --在沒有修改的情況下退出vi 4、:q! --修改了,但是不想儲存,強行退出 5、:wq --修改了,儲存並退出 現在我們要找到的是修改的檔案 命令:  1、cd/etc/nginx/conf.d/ --進入conf.d資料夾 2、ls -lsh --ls是檢視資料夾下的所有檔案, -lsh是顯示檔案屬性 並按照時間排序。這裡可以只用 ls
3、我們要修改的是default.conf 進入這個檔案的編輯狀態:sudo vi default.conf
4、點i進入編輯狀態(一下內容部分引自網路) 一,Nginx 正向代理配置檔案:
server {
    resolver 8.8.8.8;
    resolver_timeout 5s;
    listen 8090;
    location / {
        proxy_pass $scheme://$host$request_uri;
        proxy_set_header Host $http_host;
        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout 30;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}

二,Nginx 正向代理配置說明(以上沒有顯示內容,註釋掉即可):
1,配置 DNS 解析 IP 地址,比如 Google Public DNS,以及超時時間(5秒)。
resolver 這裡你要改成你們DNS伺服器的IP (檢視dns的命令:cat /etc/resolv.conf);
resolver_timeout 5s;
說明:如果自己dns伺服器對應的ip不止一個,網上的解決方案是兩個ip並排,用空格分開,
如resolver 8.8.8.8  9.9.9.9; 但是我試過是不行的,現在我只綁定了一個IP,如果誰有解決辦法,希望能得到您的指點。
對於listen 8090; 這個是埠是自己制定的,阿里雲我用的是80 ,微軟雲和aws我用的是8090.
值得一提的是阿里雲這些埠是預設開放的,而微軟與和AWS預設只開放了22埠,如果用到其他的埠,需要請運維幫忙開通。
2,配置正向代理引數,均是由 Nginx 變數組成。其中 proxy_set_header 部分的配置,
是為了解決如果 URL 中帶 "."(點)後 Nginx 503 錯誤。

proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
3,配置快取大小,關閉磁碟快取讀寫減少I/O,以及代理連線超時時間。

proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
4,配置代理伺服器 Http 狀態快取時間。

proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
三,不支援代理 Https 網站
因為 Nginx 不支援 CONNECT,所以無法正向代理 Https 網站(網上銀行,Gmail)。
如果訪問 Https 網站,比如:https://www.google.com,Nginx access.log 日誌如下:

"CONNECT www.google.com:443 HTTP/1.1" 400
第五步:新增nginx身份驗證 身份驗證一般有兩種方式,一種是使用ssl 443即證書的方式,另一種是使用htpasswd的方式,這裡為了方便我選擇後者。

最後的效果就類似(不同瀏覽器的介面有所不同):


如果認證失敗,就會報HTTP錯誤:401 Authorization Required。

要實現這樣的功能,就需要更改伺服器的配置,並設定好用於登入的使用者名稱和密碼。

首先我們需要更改網站的Nginx的server配置,我們找到剛才配置正向代理的那個配置檔案,在lication中新增兩行如下:

cd/etc/nginx/conf.d/ sudo vi default.conf server {
# ...
location / {
# 新增下面兩行
auth_basic "Restricted"; (Restricted為出錯後的提示語)
auth_basic_user_file  proxy.pwd; (proxy.pwd是祕鑰檔案的檔名,這裡應為祕鑰檔案的完整路徑,如下圖)
# ...
}
# ...
}


接下來需要建立htpasswd檔案,這裡有一些細節需要注意:

htpasswd的路徑
和nginx.conf在同一級目錄即可。CentOS伺服器的話一般就在/etc/nginx/下面。

htpasswd的內容
每一行為一個使用者,格式為username:password。但是要注意,這裡的password不是明文,而是將password進行crypt(3)加密後的字串。

你可以使用一段PHP程式碼來生成htpasswd中的password: 也可以使用網上的現在生成工具(不推薦),我的檔案是老大直接給我的Python生成的。

// 密碼明文
$password = 'some password';
// 對密碼進行加密
$password = crypt($password, base64_encode($password));
// 獲得加密後的密碼
echo $password;

然後將字串寫入htpasswd檔案中:


username1:xucqMk13TfooE
username2:YXTfb3xWKOMBM
...


htpasswd的許可權

需要更改htpasswd檔案的許可權,執行如下命令: 

sudo chown root:www-data htpasswd
sudo chmod 640 htpasswd 

當上面的準備工作都做好之後,我們就可以重新載入或者重啟Nginx伺服器了: 

sudo /etc/init.d/nginx reload 
說明:密碼檔案匯入的方法有很多,可以通過Xmanager Enterprise 4中的Xftp,還可以使用pscp.exe,如果倒不進去的話還有最原始的辦法,在/etc/nginx/ 下新建檔案proxy.pwd 然後將祕鑰中的文字考進去即可。 新建命令我用的 sudo vi 檔名

相關推薦

阿里微軟Windows AzureAWS 使用Nginx配置http正向代理伺服器

作為一個完全的Linux和Nginx雙料白痴,我覺得有必要把這幾天的折騰整理一下,以備以後檢視。 首先我接到的是5檯安裝好Linux的雲主機,兩臺阿里雲,兩臺Azure和一臺AWS。(包括雲主機IP,主機名,使用者名稱和密碼) 我要做的事情: 第一步:登入雲主機。 網上查很

AWS S3故障4小時,波及 AdobeSlack 等數千家線上服務

亞馬遜雲端資料儲存服務 Amazon S3(Amazon Simple Storage Service),在美國時間 28 日上午發生故障而一度中斷,連帶使數千個採用 Amazon S3 服務的網站受到波及,包括軟體系統服務、新聞媒體、政府機構等網站皆無法正常運作,故障持續4小時。 事發當時,亞馬遜

AWS創新與實踐專場:AWS的大資料運維與架構實戰

【CSDN現場報道】5月13日-15日,由全球最大中文IT社群CSDN主辦的“2016中國雲端計算技術大會”(Cloud Computing Technology Conference 2016,簡稱CCTC 2016)在北京新雲南皇冠假日酒店隆重舉行。本次大會

蘋果的icloud目前有部分的服務是託管在AWS微軟AZURE

  本文主要針對在icloud中出現的AWS和Azure雲服務進行了分析。   最近分析蘋果的icloud流量發現,icloud使用了亞馬遜雲AWS以及微軟雲Azure來進行分流,只能說蘋果的iclo

AWS在線系列講座——基於AWS平臺的高可用應用設計

data 可用 mod -m 討論 數據 目標 popu 實例 設計高可用的應用是架構師的一個重要目標。可是基於雲計算平臺設計高可用應用與基於傳統平臺的設計有很多不同。雲計算在給架構師帶來了很多新的設計挑戰的時候,也給帶來了很多新的設計理念和可用的服務。怎樣在設計應用的

AWS學習-創建EC2 windows

aws亞馬遜AWS學習-創建EC2 windows亞馬遜AWS學習-創建EC2 windows1. 在EC2中啟動實例2. 選擇免費windows3. 查看相關硬件4. 選擇安全組5. 選擇密鑰對6. 獲取登錄密碼最近剛換工作,也是第一次接觸AWS,在此記錄學習AWS。1. 在EC2中啟動實例2. 選擇免費w

阿里雲圖像識別速度創紀錄,比AWS快2.36倍,比谷歌快5.28倍

12月25日,斯坦福大學釋出了最新的DAWNBench深度學習推理榜單,阿里雲獲得了影象識別效能及成本雙料冠軍,打破了亞馬遜保持的長達8個月的紀錄,這是該榜單首次出現中國科技公司。 斯坦福大學DAWNBench是人工智慧領域最權威的競賽之一,它要求參賽機構的計算平臺對50000張圖片進行精準識別並分類。測試

AWS免費套餐_免費服務

† 以下 Windows 變體不符合使用免費套餐的條件:Microsoft Windows Server 2008 R2 with SQL Server Web、Microsoft Windows Server 2008 R2 with SQL Server Standa

AWS培訓_入門指導 AWS培訓課程

我們的免費數字化培訓是由 AWS 專家設計。自主安排進度學習 70 多個 AWS 服務和解決方案,許多課程的時長只有 10 分鐘或更短。 您還可以參加我們的“AWS Cloud Practitioner Essentia

解決方案_AWS解決方案

AWS 提供了一整套服務和解決方案,可運行復雜且可擴充套件的應用程式,有助於實現更好的業務成效。在 AWS 雲中執行應用程式有助於您更快地進行遷移、更安全地進行操作,並且還能節省大量成本;同時享受雲的敏捷性、規模和效能優勢。 (

AWS合作伙伴解決方案_AWS解決方案

Amazon Web Services 誠聘精英。 Amazon Web Services (AWS) 是 Amazon.com 的一個充滿活力、不斷壯大的業務部門。我們現誠聘軟體開發工程師、產品經理、客戶經理、解決方案架構師、支援工程師、系統工程師以及設計師等人才。請訪問我

使用AWS伺服器進行深度學習——免環境配置/GPU支援/Keras/TensorFlow/OpenCV

吐槽:由於科研任務,需要在雲端執行一個基於神經網路的目標識別庫,需要用到GPU加速。亞馬遜有很多自帶GPU的機器,但是環境的配置可折騰壞了,尤其是opencv,每次總會出各種各樣的問題! 無奈中,看見了Adrian Rosebrock的blog:Pre-con

AWS-IoT:從架構到開發

本來很早就想寫一個關於AWS,MS這些老牌雲服務商的IOT支援介紹的,一直犯懶。昨天參加了AWS的一個線下活動,很接地氣的活動,一下記住了好幾個AWS的服務名稱以及其IOT架構,又勾起了寫的想法。 不過,偷懶主義告訴我,一定有別人寫吧,搜搜看,還真找到一篇不錯的,那我就不寫

AWS寧夏資料中心早就完工了,為何還不投入執行?

左一為前美國白宮發言人、現任亞馬遜全球高階副總裁傑伊·卡尼(Jay Carney) 誰是獨角獸 發自美國西雅圖 5年甚至更長,是亞馬遜在寧夏中衛資料中心落地的時間。 美國當地時間5月9日,亞馬遜全球高階副總裁傑伊·卡尼(Jay Carney)在接受《誰是獨角獸》採訪時表示,亞馬遜雲端計算服務(Am

AWS沙龍筆記:如何通過AWS快速發展國際業務?及多種架構方案

痛點:孵化器中企業準備“出海”,那麼如何加快海內外之間互相訪問? 例如:交易所,伺服器在國外,使用者在中國,反之亦然 設計領域:由於、電商、IOT、社交、廣告 服務客戶:小米、網易、獵豹移動、一加、絕地求生等 四步:敏捷起步、快速擴張、平臺優化、有效變現 一、敏捷起步 5分鐘

國外物聯網平臺(1):AWS IoT

國外物聯網平臺(1)——亞馬遜AWS IoT 馬智 平臺定位 AWS IoT是一款託管的雲平臺,使互聯裝置可以輕鬆安全地與雲應用程式及其他裝置互動。 AWS IoT可支援數十億臺裝置和數萬億條訊息,並且可以對這些訊息進行處理並將其安全可靠地路由至 AWS 終端節點和其他裝置。應

AWS學習——為oracle型別的RDS資料庫部署資料

關於為RDS部署資料,匯入匯出等操作,更多詳細內容可參見[官方文件]。 為RDS部署資料,有一點需要注意,RDS資料庫只打開了1521埠,所以所有操作都只能通過1521埠的資料庫連線進行。 1 匯出資料 在源資料庫中: 可以檢視下目錄結構: -

將django程式碼搭建到AWS虛擬機器的apache2,並繫結指定域名

前提: 伺服器上各軟體的版本一覽(部分預設已安裝,部分需要自己安裝) 1) 伺服器是:亞馬遜AWS免費版EC2 2) 伺服器的作業系統是:Ubuntu 16.04 3) 伺服器上安裝的python版本為:python 2.7.12 4) 伺服器上django版本為:djan

aws伺服器搭建實現微信小程式換臉(持續更新中)

先上一張換臉效果圖,讓你有興趣看下去圖片從網上搜的,如果有侵犯您的肖像權,請聯絡我,我會刪掉aws 相對於國內伺服器那是相當的便宜,而且有一年的免費試用期,對於想嘗試開發小程式的小夥伴已經足夠用了小程式有很多坑,首先連線服務必須要https,這個要修改伺服器的設定,不過免費的

AWS官方部落格

去年,我曾釋出訊息說,我們正在開發 AWS GovCloud(美國東部),也就是在美國東部開發一個區域來與 2011 年啟動的 AWS GovCloud(美國西部)區域配套。上述新區域現已開放,並已準備好滿足美國聯邦、州及地方政府機構、為上述機構提供服務的 IT 承包商和處理受監管工作負