2つの基本的な領域をカバーするテストhaproxyサーバーをセットアップしようとしています。ユーザーがhttpを使用しているが、特定のuri部分が存在しない場合のみ、httpsに自動リダイレクトします。
たとえば、ユーザーが http://www.test.com にアクセスすると、それらは https://www.test.com にリダイレクトされます。しかし、ユーザーが https://www.test.com/blog または http://www.test.com/blog にアクセスすると、リダイレクトされます- http://www.test.com/blog 。
これは私の現在のテストhaproxy.cfgです。 haproxy 1.5-dev17を実行しています
これに関するどんな助けでも大歓迎です。
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 15000
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
option abortonclose
option http-server-close
option redispatch
retries 3
timeout queue 600s
timeout connect 9s
timeout client 60s
timeout server 60s
balance roundrobin
# Set up application listeners here.
frontend incoming
bind *:80 name http
acl has_blog_uri path /blog /blog/
redirect scheme https if !has_blog_uri !{ ssl_fc }
bind *:443 ssl crt /etc/haproxy/test.pem
use_backend blog_app if has_blog_uri
default_backend Rails_app
backend Rails_app
option httpchk GET /app_health
# server app1 10.1.1.1:8080 weight 1 check
server app2 10.1.1.2:8080 weight 1 check
backend blog_app
option httpchk GET /blog/check.txt
server blog 10.1.1.3:8080 check
いくつか提案させてください。
redirect location <absolute_url> if <conditions>
の形式を使用してみてくださいpath_beg -i /blog
を使用してみてくださいこれらのコメントに基づいて、構成のincoming
部分に変更を提案します。これは http://www.test.com を https://www.test.com にリダイレクトし、さらに httpsが試行されると失敗します。 ://www.test.com/blog (ユーザーへのリンク候補を含むページをそこに置くことができます)。
frontend public
bind *:80
acl has_blog_uri path_beg -i /blog
redirect location https://www.test.com if !has_blog_uri
use_backend blog_app if has_blog_uri
frontend public-ssl
bind *:443 ssl crt /etc/haproxy/test.pem
acl has_blog_uri path_beg -i /blog
use_backend Rails_app if !has_blog_uri
お役に立てれば。