Go Conference 2018 Springで話した内容です。 話し手は、Golangを利用して、FTPプロキシサーバを開発しています。その際に起こった問題や、Golangにおける複数ソケットを扱う際のテクニックを紹介します。
以前書いたとおり、ApacheではリバースプロキシでバックエンドとHTTP2通信することができます。 asnokaze.hatenablog.com Nginxの場合は、開発者のメーリングリストでGoogleの人が書いてる「ngx_http_v2_upstream」パッチを利用することでバックエンド(upstream)とHTTP2通信することが出来るようになります。 パッチ [PATCH 01 of 14] Output chain: propagate last_buf flag to c->send_chain() [PATCH 02 of 14] Upstream keepalive: preserve c->data [PATCH 03 of 14] HTTP/2: add debug logging of control frames [PATCH 04 of 14] HTTP/
リバースプロキシのコンフィグテスト やりたいこと Apacheをnginxに置き換えたい Apacheやnginxをバージョンアップしたい テストパターン パターン1: 本番のproxyサーバに実際にリクエストする パターン2: proxyサーバをテスト用に起動しつつ、upstreamやlistenディレクティブなどconfigの一部を書き換える パターン3: ngx_mrubyやmod_mrubyで設定をmrubyで書き、mruby-mtestなどでテストコードを書く パターン2はconfigの一部を書き換えるため、本当に本番の環境で正しく動作するかわからない問題がある。テストコードがnginxやApacheなど特定の実装に依存する。CIは回しやすい。 パターン3はngx_mrubyやmod_mrubyでconfigを書かなければならないため、今動いているproxyの設定をテストできない
Amazon S3の利用料節約を考えてみる ~apache(mod_proxy,mod_cache設定編) Amazon S3の利用料節約を考えてみる(の結果) の続きの話しです。前回、構成については説明しましたが、具体的にapacheでどうやっているの?については触れていなかったので、今回apacheの設定に絞って説明したいと思います。 こんな構成 haproxy の話しは今回のリバースプロキシにはとりあえずあまり関係のない話しなので割愛しますね apache のインストール apache 最新版をyum でインストールする にまとめました。これを参考にと言いたいところですが、単にこれでインストールしましたと言いたかっただけなので無視してもらって結構です /etc/init.d/httpd.conf の編集 インストールが無事完了しましたら、httpd.confの編集をします 以下の箇所
経緯 WebSocketを使ったアプリケーションを作ったが、ポートが80しか使えない nginxでどっちも80に流したい ポイント / はまり所 WebSocketのプロキシにはUpgradeヘッダ(HTTP 1.1)への対応が必要 Upgradeヘッダへの対応は nginx v1.3.13以降 参考: WebSocket proxying 厳しい条件から先に書く デフォルトだと30秒通信がないと切断される(!) nginxでリバースプロキシしているときだけ一定時間で接続が切れるので何かと思えば、 普通のHTTPの通信と同様に30秒(だったはず)通信がなかった場合はタイムアウトってことで自動でコネクションを切ってくれていたみたい。 ping/pongを30s以内にやればいいんだろうけど、とりあえず5分に設定。 config server { listen *:80 default_serv
Nginxでは, serverコンテキストのlocationコンテキストにおいて, proxy_passディレクティブを利用することで任意のホストにアクセスを転送することができます. 例えば, serverコンテキストにおいて, location / { proxy_pass http://127.0.0.1:5000; } みたいに書いてあげれば, localhostの5000番ポートにアクセスを転送することが出来ます. Webサービスでは, こういう感じでNginxが443番(HTTPS)や80番ポート(HTTP)で受けたアクセスを5000番ポートなどで動いているWebアプリケーションに転送している訳です. で, このproxy_passディレクティブは, IPをそのまま書くのではなく, 次のようにドメインを書くこともできます. location / { proxy_pass http
NginxのTCP Load Balancing(ngx_stream_core_module) もともとNginx+で利用できたTCP Load Balancing機能というものがある http://nginx.com/products/application-load-balancing/ HTTPにかぎらずTCPレイヤでロードバランシグ機能を提供する。つまりMySQLやMemcachedのロードバランサとしても使用することができるようになる。 OSS版でも使用できるようになったらしいhttp://hg.nginx.org/nginx/rev/61d7ae76647d 試しにMemcachedのロードバランサを構築してみた(環境はubuntu14.04) nginxビルド ざっと適当にインストール sudo apt-get install libpcre3 libpcre3-dev b
古い書籍に掲載されたPHP記述の掲示板ソフトを動かしていると、ログアウト処理がうまく動作していないことに気がつきました。チェックの方法ですが、ログアウト処理の脆弱性検査の簡単なものは、「安全なウェブサイトの作り方」別冊の「ウェブ健康診断仕様」に記載されています。 (J)認証 ログアウト機能はあるか、適切に実装されているか ログアウト機能がない、あるいはログアウト後「戻る」ボタンでセッションを再開できる場合 この仕様書にある通り、『ログアウト後「戻る」ボタンでセッションを再開できる』状態でした。 おそらくセッション破棄がきちんと書かれていないのだろうと思いログアウト部分のソースを見ると、以下の様な処理内容でした(オリジナルからはリライトしています)。 <?php // logout.php require_once('common.php'); // 共通の設定・処理 session_sta
概要 社内プロキシに様々なサイトへのアクセスをブロックされたり、社外サーバにsshできなかったりする人向けに社外プロキシを立ててあらゆるサイトにアクセスする方法のまとめです。(後述しますが半分くらいネタポストです。) 他にも以下のような効果がありますので、プロキシフリーな会社にお勤めもし良かったら参考にして頂ければと思います。 なぜか2015年になっても存在するカフェとかホテルとかでの保護されていなかったりする無線wifiを使っても盗聴されない。 日本からアクセスできないサイトにアクセスできる。(海外のデータセンタ上のVMを使った場合) なお、非認証プロキシを例にしてます。認証プロキシでもあまり変わらないとは思いますが、環境が無いため未確認です。また、プロキシの挙動や設定方法はプロキシサーバの種類や設定によって多岐に渡るため、全てのプロキシで同じ方法が使えるとは限らないとは思います。 最後
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く