SlideShare a Scribd company logo
1 of 46
Download to read offline
未設定のドメインでも
ELB 経由で proxy.pac を使って
https で接続する方法
天野卓
JAWS-UG 長野支部 勉強会 #2
NSEG #58
AWS上の構成
運用中のウェブサイトを
この環境に移行する
DNSのレコードの設定を
更新する前に
ブラウザで確認したい
• 割りと頻繁にIPアドレスが変わるのでhosts
ファイルでは設定しにくい
• DNSサーバーを用意するのは面倒
• proxy.pac で指定できると嬉しい
if (host == “example.com") {
return “PROXY 123345.ap-northeast-1.elb.amazonaws.com”;
}
プロキシサーバーを経由して
HTTPSで接続する場合には
ブラウザはCONNECTメソッドを使う
CONNECTメソッドとは?
CONNECT www.example.com:443 HTTP/1.1
ELBはCONNECTメソッドに
対応していない
CONNECTメソッドに
対応しているプロキシサーバー
を準備すれば接続できそう
• Apache
• Squid
• 等 …
• このためだけに入れるのは面倒くさい
• 設定ファイルを書くのも面倒くさい
• 移行後にアンインストールするのも面倒くさい
• シングルバイナリでコピーすればそのまま動く
• 設定ファイルを書かなくても動く
• シングルバイナリでコピーすればそのまま動く
• go で書いたらシングルバイナリになる
• 確かプロキシサーバーを書けるライブラリがあった
• 設定ファイルを書かなくても動く
• 接続元のIPアドレスを利用できるかも
r2proxy
means
"reflective reverse proxy"
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”;

}
}
r2proxyの実装
github.com/elazarl/goproxy
import (
"github.com/elazarl/goproxy"
"log"
"net/http"
)
func main() {
proxy := goproxy.NewProxyHttpServer()
proxy.Verbose = true
log.Fatal(http.ListenAndServe(":8080", proxy))
}
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)
}
goproxyを利用する際の
注意 !
接続を制限するコードを
何も入れないと
CONNECTメソッドで
任意のサーバーの任意のポートへ
トンネルし放題になります
import (
"github.com/elazarl/goproxy"
"log"
"net/http"
)
func main() {
proxy := goproxy.NewProxyHttpServer()
proxy.Verbose = true
log.Fatal(http.ListenAndServe(":8080", proxy))
}
IAM ロールで緩めに
権限を与えていたりすると…
r2proxyの特徴
• バイナリをコピーして実行すれば動作する
• ELBのHTTPSのListenerを利用できる
• EC2のインスタンスでHTTPSの設定をする必要がない
• ELBの"Cookie Stickiness”も利用できる

(2014年10月時点)
転送料の試算
おそらく無料
(AZ内の転送なので)
r2proxyの制限事項
• ELBの現在の文書化されていない挙動に依存
• 「接続元のIPアドレスからも応答を返してくれる」
• 接続先のホスト名は暗号化されない
• HTTPSのリクエストの内容は暗号化される
r2proxyの性能
手元のGoogle Chrome で
計測した性能なので
ざっくりとした傾向のデータです
• KeepAlive で接続を確立した状態から計測
• r2proxy は KeepAlive に未対応
• ただし、HTTPS に関しては KeepAlive になる
• CONNECTメソッドで接続しているので
• キャッシュを Disable にしてページをリロード
• ロード後の以下の値の算術平均
• window.performance.timing.domComplete -
window.performance.timing.connectStart
ありがとうございました!
A theme of this presentation is
https://github.com/sanographix/azusa-keynote

More Related Content

What's hot

itamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningitamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningYuto Ogi
 
20130330 JAWS-UG広島 美人CDP
20130330 JAWS-UG広島 美人CDP20130330 JAWS-UG広島 美人CDP
20130330 JAWS-UG広島 美人CDP真吾 吉田
 
Windows azure webサイトの紹介
Windows azure webサイトの紹介Windows azure webサイトの紹介
Windows azure webサイトの紹介Daisuke Abe
 
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理Seiichiro Ishida
 
20130413 JAWS-UG北陸 美人CDP
20130413 JAWS-UG北陸 美人CDP20130413 JAWS-UG北陸 美人CDP
20130413 JAWS-UG北陸 美人CDP真吾 吉田
 
再入門、サーバープッシュ技術
再入門、サーバープッシュ技術再入門、サーバープッシュ技術
再入門、サーバープッシュ技術Shin Sekaryo
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocketAdvancedTechNight
 
PHP7実環境ベンチ2016春
PHP7実環境ベンチ2016春PHP7実環境ベンチ2016春
PHP7実環境ベンチ2016春Ryo Tomidokoro
 
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったapachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったJunichi Ishida
 
Xamppでお手軽cms開発環境を手に入れる
Xamppでお手軽cms開発環境を手に入れるXamppでお手軽cms開発環境を手に入れる
Xamppでお手軽cms開発環境を手に入れるTakashi Uemura
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Nozomi Kurihara
 
Website build exercise_opsguide_japanese
Website build exercise_opsguide_japaneseWebsite build exercise_opsguide_japanese
Website build exercise_opsguide_japanesemeilai521
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことKentaro Matsui
 
PostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようPostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようYukiya Hayashi
 
Web技術勉強会 第26回
Web技術勉強会 第26回Web技術勉強会 第26回
Web技術勉強会 第26回龍一 田中
 
Re: WebServer BenchMarking
Re: WebServer BenchMarkingRe: WebServer BenchMarking
Re: WebServer BenchMarkingRyo Tomidokoro
 
Samba4を「ふつうに」使おう!
Samba4を「ふつうに」使おう!Samba4を「ふつうに」使おう!
Samba4を「ふつうに」使おう!基信 高橋
 

What's hot (19)

itamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioningitamaeで一撃サーバーProvisioning
itamaeで一撃サーバーProvisioning
 
20130330 JAWS-UG広島 美人CDP
20130330 JAWS-UG広島 美人CDP20130330 JAWS-UG広島 美人CDP
20130330 JAWS-UG広島 美人CDP
 
Windows azure webサイトの紹介
Windows azure webサイトの紹介Windows azure webサイトの紹介
Windows azure webサイトの紹介
 
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
 
20130413 JAWS-UG北陸 美人CDP
20130413 JAWS-UG北陸 美人CDP20130413 JAWS-UG北陸 美人CDP
20130413 JAWS-UG北陸 美人CDP
 
再入門、サーバープッシュ技術
再入門、サーバープッシュ技術再入門、サーバープッシュ技術
再入門、サーバープッシュ技術
 
GGEasyMonitor技術情報
GGEasyMonitor技術情報GGEasyMonitor技術情報
GGEasyMonitor技術情報
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
 
PHP7実環境ベンチ2016春
PHP7実環境ベンチ2016春PHP7実環境ベンチ2016春
PHP7実環境ベンチ2016春
 
20150207 jawsug kansai
20150207 jawsug kansai20150207 jawsug kansai
20150207 jawsug kansai
 
apachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin ServerっぽいやつをつくったapachehereというPHPのBuiltin Serverっぽいやつをつくった
apachehereというPHPのBuiltin Serverっぽいやつをつくった
 
Xamppでお手軽cms開発環境を手に入れる
Xamppでお手軽cms開発環境を手に入れるXamppでお手軽cms開発環境を手に入れる
Xamppでお手軽cms開発環境を手に入れる
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
 
Website build exercise_opsguide_japanese
Website build exercise_opsguide_japaneseWebsite build exercise_opsguide_japanese
Website build exercise_opsguide_japanese
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
 
PostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しようPostgreSQL DBのバックアップを一元化しよう
PostgreSQL DBのバックアップを一元化しよう
 
Web技術勉強会 第26回
Web技術勉強会 第26回Web技術勉強会 第26回
Web技術勉強会 第26回
 
Re: WebServer BenchMarking
Re: WebServer BenchMarkingRe: WebServer BenchMarking
Re: WebServer BenchMarking
 
Samba4を「ふつうに」使おう!
Samba4を「ふつうに」使おう!Samba4を「ふつうに」使おう!
Samba4を「ふつうに」使おう!
 

Similar to 未設定のドメインでも ELB 経由で proxy.pac を使って https で接続する方法

Webサーバ勉強会#4
Webサーバ勉強会#4Webサーバ勉強会#4
Webサーバ勉強会#4oranie Narut
 
[AWSマイスターシリーズ] Amazon Route53
[AWSマイスターシリーズ] Amazon Route53[AWSマイスターシリーズ] Amazon Route53
[AWSマイスターシリーズ] Amazon Route53Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAmazon Web Services Japan
 
AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53Amazon Web Services Japan
 
Aws startup-tech-summer2015
Aws startup-tech-summer2015Aws startup-tech-summer2015
Aws startup-tech-summer2015Shota Umeda
 
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)Amazon Web Services Japan
 
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信Boss4434
 
LAMP環境にDocker環境を追加してみた
LAMP環境にDocker環境を追加してみたLAMP環境にDocker環境を追加してみた
LAMP環境にDocker環境を追加してみたHiroshi Hatta
 
AWS Black Belt Techシリーズ Amazon Workspaces
AWS Black Belt Techシリーズ  Amazon WorkspacesAWS Black Belt Techシリーズ  Amazon Workspaces
AWS Black Belt Techシリーズ Amazon WorkspacesAmazon Web Services Japan
 
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@EdgeAWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@EdgeAmazon Web Services Japan
 
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編Amazon Web Services Japan
 
CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)Hiroyasu Suzuki
 
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編Amazon Web Services Japan
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンKazuyuki Miyake
 
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計Amazon Web Services Japan
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - SORACOM, INC
 

Similar to 未設定のドメインでも ELB 経由で proxy.pac を使って https で接続する方法 (20)

PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
Webサーバ勉強会#4
Webサーバ勉強会#4Webサーバ勉強会#4
Webサーバ勉強会#4
 
[AWSマイスターシリーズ] Amazon Route53
[AWSマイスターシリーズ] Amazon Route53[AWSマイスターシリーズ] Amazon Route53
[AWSマイスターシリーズ] Amazon Route53
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic BeanstalkAWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
 
AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53AWS Black Belt Techシリーズ Amazon Route53
AWS Black Belt Techシリーズ Amazon Route53
 
Aws startup-tech-summer2015
Aws startup-tech-summer2015Aws startup-tech-summer2015
Aws startup-tech-summer2015
 
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
 
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
Aws summits2014 amazon_cloudfrontを利用したサイト高速化とセキュア配信
 
LAMP環境にDocker環境を追加してみた
LAMP環境にDocker環境を追加してみたLAMP環境にDocker環境を追加してみた
LAMP環境にDocker環境を追加してみた
 
AWS Black Belt Techシリーズ Amazon Workspaces
AWS Black Belt Techシリーズ  Amazon WorkspacesAWS Black Belt Techシリーズ  Amazon Workspaces
AWS Black Belt Techシリーズ Amazon Workspaces
 
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@EdgeAWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge
 
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
[AWS Summit 2012] クラウドデザインパターン#4 CDP VPC移行編
 
CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)
 
さくらのクラウドでのPlesk Onyx導入手順
さくらのクラウドでのPlesk Onyx導入手順さくらのクラウドでのPlesk Onyx導入手順
さくらのクラウドでのPlesk Onyx導入手順
 
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
Chef
ChefChef
Chef
 
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
AWS Black Belt Online Seminar 2017 AWSへのネットワーク接続とAWS上のネットワーク内部設計
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 - AWSクラウドデザインパターン(CDP) - 概要編 -
AWSクラウドデザインパターン(CDP) - 概要編 -
 

More from Taku AMANO

Movable Type as a Playground
Movable Type as a PlaygroundMovable Type as a Playground
Movable Type as a PlaygroundTaku AMANO
 
The New Rich Text Editor
The New Rich Text EditorThe New Rich Text Editor
The New Rich Text EditorTaku AMANO
 
File API: Writer & Directories and System
File API: Writer & Directories and SystemFile API: Writer & Directories and System
File API: Writer & Directories and SystemTaku AMANO
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and ProgrammingTaku AMANO
 
Movable Type in the cloud
Movable Type in the cloudMovable Type in the cloud
Movable Type in the cloudTaku AMANO
 
About NSEG Vol.5
About NSEG Vol.5About NSEG Vol.5
About NSEG Vol.5Taku AMANO
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626Taku AMANO
 
Self Introduction 20100211
Self Introduction 20100211Self Introduction 20100211
Self Introduction 20100211Taku AMANO
 
MT LT 20100205
MT LT 20100205MT LT 20100205
MT LT 20100205Taku AMANO
 
MT LT 20091209
MT LT 20091209MT LT 20091209
MT LT 20091209Taku AMANO
 

More from Taku AMANO (12)

Movable Type as a Playground
Movable Type as a PlaygroundMovable Type as a Playground
Movable Type as a Playground
 
The New Rich Text Editor
The New Rich Text EditorThe New Rich Text Editor
The New Rich Text Editor
 
File API: Writer & Directories and System
File API: Writer & Directories and SystemFile API: Writer & Directories and System
File API: Writer & Directories and System
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and Programming
 
Movable Type in the cloud
Movable Type in the cloudMovable Type in the cloud
Movable Type in the cloud
 
Git 20100724
Git 20100724Git 20100724
Git 20100724
 
About NSEG Vol.5
About NSEG Vol.5About NSEG Vol.5
About NSEG Vol.5
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626
 
Git 20100313
Git 20100313Git 20100313
Git 20100313
 
Self Introduction 20100211
Self Introduction 20100211Self Introduction 20100211
Self Introduction 20100211
 
MT LT 20100205
MT LT 20100205MT LT 20100205
MT LT 20100205
 
MT LT 20091209
MT LT 20091209MT LT 20091209
MT LT 20091209
 

未設定のドメインでも ELB 経由で proxy.pac を使って https で接続する方法