2017-10-11 29 views
0

我無法使HTTPS在我的應用程序中工作。 首先,我在Route 53上使用了一個Type爲DNS的Elastic Ip和http工程,但是當我試圖在https上工作時,我試圖創建Load Balancer,並在A類型上使用別名,發生503錯誤。如何在Ngix服務器上的AWS中使用Https?

我所做的:

1)在我的域名的DNS面板(registro.br)加4亞馬遜DNS: 2)在亞馬遜證書管理器,我創造了我的域名證書;

3)在安全組 - 入站標籤,我包括HTTPS(HTTPS - TCP - 443 - 0.0.0.0/0)

4)我創建了一個經典負載平衡器和包括2個listners:

  • HTTP - 端口80
  • HTTPS - 端口443 |實例協議HTTP |實例端口80 |關聯我的證書(步驟1 - ACM亞馬遜證書管理器)

5)在亞馬遜路線53 - 託管區域,我加了2條記錄在我的託管區:

  1. CNAME WWW與價值MYDOMAIN .COM
  2. 類型A IPv4地址|別名是|別名目標:我的負載均衡器

在教程中,我看到(youtube + internet),只有使用HTTPS上述步驟才能在Amazon EC2上運行。但是,這些教程不適用於NGINX和Ruby On Rails。

一些打印: Load Balancer Route 53

我的環境:

操作系統:Ubuntu的LTS 14.04.2紅寶石 -v:紅寶石2.2.2p95(2015年4月13日修訂50295)x86_64-的Linux] 導軌-v:Rails的4.2.3 nginx的-v:nginx的/ 1.8.0


EMAIL FROM AWS SUPPORT:

我們看到503錯誤的原因是因爲後端實例未能通過ELB健康檢查,而ELB將實例標記爲不健康。如果沒有健康實例,ELB將不會將請求轉發到後端實例,並會返回HTTP 503錯誤代碼。 (下面的健康主機計數度量鏈接)

因此,現在我們必須驗證爲什麼健康檢查失敗。一旦我們解決這個問題,ELB會將請求發送到您的後端nginx服務器。

查看一些內部日誌,我可以看到您的後端實例正在爲來自負載平衡器節點的運行狀況檢查請求返回404錯誤。因此我對你的實例34.234.9.186進行了一些測試。

我注意到autonomosapp.com.br目前指向IP 34.234.9.186。這裏是我發現的: Curl http:// ELASTIC IP/index。html - 迴應404未找到錯誤(你也可以在瀏覽器上試試這個,你會看到一個404錯誤) Curl http:// autonomosapp。 COM。 br /index.html - 響應200 OK(成功響應)

儘管這兩個請求都指向相同的IP和端口,但輸出卻不同。如果你在你的nginx配置文件中配置了虛擬主機來根據主機頭返回不同的網頁,就會發生這種情況。 ELB將發送運行狀況檢查請求到後端實例的私有IP地址,並且這些運行狀況檢查請求的URL看起來像http:// 172.31.95.37:80 // index.html。由於這些請求在主機頭中沒有「autonomosapp.com.br」,您的後端將返回404錯誤。

注意:172.31.95.37是您的實例的私有IP地址。

這就是說,你必須配置你的nginx服務器的方式,它會返回200ok的請求沒有主機頭。

修改完成後,要驗證您是否已正確設置,請從同一VPC中的另一個linux實例運行以下命令。

命令:捲曲-Iv HTTP:// 172.31.95.37:80 //index.html

如果此命令返回200ok的,健康檢查是更容易成功。如果他們仍然失敗,請回到我身邊。


更新:我試圖改變網站啓用在nginx的配置爲「」,但錯誤依然存在

回答

0

我解決:

在nginx的/網站啓用:

location /elb-health { 
    return 200; 
    access_log off; 
} 

改變了ELB健康檢查/ ELB-heatlh和AWS ELB停止從AWS支持返回503

0

我猜想錯誤簡單地從你的ELB配置,
如果你真的想你的nginx使用443端口你的EC2你需要設置這種類型監聽的:

HTTPS - 端口443 |實例協議HTTPS |實例端口443
而不是

HTTPS - 端口443 |實例協議HTTP |實例端口80 |

或者你只需​​配置Nginx只監聽80端口,ELB將簽名並將443重定向到80,並且所有工作都使用HTTPS。

+0

電子郵件: 「話雖這麼說,你必須配置你的nginx服務器,以便在沒有主機頭的情況下它將返回200ok的請求。修改完這個之後,爲了驗證你是否正確設置了它,從另一個linux運行以下命令實例在同一個VPC中。「 命令:curl -Iv http://INTERNALIP//index.html 我試圖將sites-enabled改爲「」,但404錯誤仍然存​​在於curl – Guilherme

相關問題