簡體   English   中英

應用AWS SSL證書后的Load Balancer運行狀況檢查

[英]Load Balancer Health Check After Applying AWS SSL certificates

我用自動縮放組創建了一個負載均衡器。 在我應用SSL證書並將流量重定向到HTTPS之前,它工作得非常好。 負載均衡器運行狀況檢查是http 1,我無法將該檢查移動到https,因為證書已應用於負載均衡器。 所以當前的堆棧是Rails 4.2,操作系統是ubuntu,http entertainer是nginx,我有5個實例在Load Balancer上運行。 所以我在nginx上創建了一個重定向,如下所示

if ($scheme = http) {
   return 301 mydomain.com$request_uri;
}

然后我試了這個

if ($request_uri != "/public/health.html" ) {
  set $balancer  P;
}
if ($scheme = http) {
  set $balancer  "${balancer}C";
}
if ($balancer = PC) {
  return 303 mydomain.com$request_uri;
}

隨着這些重定向我的網站下降,在瀏覽器上我有多個重定向錯誤。 這個問題讓我發瘋了。 請幫忙。 非常感謝您的幫助。 謝謝

我的tomcat服務器(實例)和apachae服務器(負載均衡器)遇到了完全相同的問題。 我也在瀏覽器中獲得了多個重定向。 我做了兩件事:

  1. 更改了負載均衡器偵聽器: http重定向到http和https重定向到https
  2. 在apache配置中改了一點:

LoadModule reqtimeout_module modules / mod_reqtimeout.so
LoadModule ssl_module modules / mod_ssl.so
聽443

<VirtualHost *:80>
  <Proxy *>
    Order deny,allow
    Allow from all
    RewriteEngine on
    RewriteCond %{REQUEST_URI} ^/$
    Rewriterule ^(.*)$ https://www.example.com/ [L,R=301]
  </Proxy>

  RequestReadTimeout header=35 body=35

  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>

<VirtualHost *:443>

  RequestReadTimeout header=35 body=35

  ProxyPass / http://localhost:8080/ retry=0
  ProxyPassReverse / http://localhost:8080/
  ProxyPreserveHost on

  SSLEngine on
  SSLCertificateFile /path/where/cert/stored/2_example.com.crt
  SSLCertificateKeyFile /path/where/cert/stored/private-key.pem
  SSLCertificateChainFile /path/where/cert/stored/1_root_bundle.crt

  ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>

我保持80號港口的健康檢查,443號站點。 此配置可能對您有所幫助。 如果你能解決問題,請告訴我。

你的nginx配置中的這樣的東西應該工作:

server {
        listen 80;
        server_name www.example.com;


        location = /public/health.html {
           return 200;
        }

        location / {
            return 301 https://$http_host$request_uri;
        }
    }

非常簡短有效的解決方案,可在任何AWS設置上100%運行。 把它放在應用程序控制器中。

before_filter :move_to_https if RAILS.env == "production"
def move_to_https
    redirect_to request.url.gsub("http","https") unless request.url.include?("https")
end

這會將任何域流量轉換為https,ip將永遠不會通過負載均衡器公開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM