狠狠撸
Search
Submit Search
未設定のドメインでも ELB 経由で proxy.pac を使って https で接続する方法
?
2 likes
?
2,273 views
Taku AMANO
r2proxy というプログラムの紹介です。
Read less
Read more
1 of 46
Download now
Download to read offline
More Related Content
未設定のドメインでも ELB 経由で proxy.pac を使って https で接続する方法
1.
未設定のドメインでも ELB 経由で proxy.pac
を使って https で接続する方法 天野卓 JAWS-UG 長野支部 勉強会 #2 NSEG #58
2.
础奥厂上の构成
4.
運用中のウェブサイトを この環境に移行する
5.
DNSのレコードの設定を 更新する前に ブラウザで確認したい
6.
? 割りと頻繁にIPアドレスが変わるのでhosts ファイルでは設定しにくい ? DNSサーバーを用意するのは面倒 ?
proxy.pac で指定できると嬉しい
7.
if (host ==
“example.com") { return “PROXY 123345.ap-northeast-1.elb.amazonaws.com”; }
14.
プロキシサーバーを経由して HTTPSで接続する場合には ブラウザはCONNECTメソッドを使う
15.
颁翱狈狈贰颁罢メソッドとは?
16.
CONNECT www.example.com:443 HTTP/1.1
17.
ELBはCONNECTメソッドに 対応していない
18.
CONNECTメソッドに 対応しているプロキシサーバー を準備すれば接続できそう
19.
? Apache ? Squid ?
等 …
20.
? このためだけに入れるのは面倒くさい ? 設定ファイルを書くのも面倒くさい ?
移行后にアンインストールするのも面倒くさい
21.
? シングルバイナリでコピーすればそのまま動く ? 設定ファイルを書かなくても動く
22.
? シングルバイナリでコピーすればそのまま動く ? go
で書いたらシングルバイナリになる ? 確かプロキシサーバーを書けるライブラリがあった ? 設定ファイルを書かなくても動く ? 接続元のIPアドレスを利用できるかも
23.
r2proxy
24.
means "re?ective reverse proxy"
26.
if (host ==
“example.com") { if (shExpMatch(url, "https*")) { return “PROXY 123345.ap-northeast-1.elb.amazonaws.com:8080”; } else { return “PROXY 123345.ap-northeast-1.elb.amazonaws.com”;? } }
27.
谤2辫谤辞虫测の実装
28.
github.com/elazarl/goproxy
29.
import ( "github.com/elazarl/goproxy" "log" "net/http" ) func main()
{ proxy := goproxy.NewProxyHttpServer() proxy.Verbose = true log.Fatal(http.ListenAndServe(":8080", proxy)) }
30.
func main() { portRegexp
:= regexp.MustCompile(":([0-9]+)$") proxy := goproxy.NewProxyHttpServer() server := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { host := strings.Split(r.RemoteAddr, ":")[0] port := 80 matches := portRegexp.FindStringSubmatch(r.URL.Host); if len(matches) != 0 { port, _ = strconv.Atoi(matches[1]) } r.URL.Host = fmt.Sprintf("%s:%d", host, port) proxy.ServeHTTP(w, r) }) http.ListenAndServe(":8080", server) }
31.
goproxyを利用する際の 注意 !
32.
接続を制限するコードを 何も入れないと CONNECTメソッドで 任意のサーバーの任意のポートへ トンネルし放題になります
33.
import ( "github.com/elazarl/goproxy" "log" "net/http" ) func main()
{ proxy := goproxy.NewProxyHttpServer() proxy.Verbose = true log.Fatal(http.ListenAndServe(":8080", proxy)) }
34.
IAM ロールで緩めに 権限を与えていたりすると…
35.
谤2辫谤辞虫测の特徴
36.
? バイナリをコピーして実行すれば動作する ? ELBのHTTPSのListenerを利用できる ?
EC2のインスタンスでHTTPSの設定をする必要がない ? ELBの"Cookie Stickiness”も利用できる? (2014年10月時点)
37.
転送料の试算
38.
おそらく無料 (AZ内の転送なので)
39.
谤2辫谤辞虫测の制限事项
40.
? ELBの現在の文書化されていない挙動に依存 ? 「接続元のIPアドレスからも応答を返してくれる」 ?
接続先のホスト名は暗号化されない ? HTTPSのリクエストの内容は暗号化される
41.
谤2辫谤辞虫测の性能
42.
手元のGoogle Chrome で 計測した性能なので ざっくりとした傾向のデータです
43.
? KeepAlive で接続を確立した状態から計測 ?
r2proxy は KeepAlive に未対応 ? ただし、HTTPS に関しては KeepAlive になる ? CONNECTメソッドで接続しているので ? キャッシュを Disable にしてページをリロード ? ロード後の以下の値の算術平均 ? window.performance.timing.domComplete - window.performance.timing.connectStart
46.
ありがとうございました! A theme of
this presentation is https://github.com/sanographix/azusa-keynote
Download