Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Nginxは高速化だけではありません。Webサーバー以外への応用事例として、ロードバランサー、HTTPS対応、WAFとしての利用を紹介します。 連載目次 Nginxの活用 「高速・軽量・高機能WebサーバーのNginx」連載の最終回にあたり、今回はNginxのWebサーバー以外の活用方法を紹介します。 NginxはWebサーバー以外にも、ロードバランサーやHTTPSサーバー、WAF(Webアプリケーションファイアウォール)、キャッシュサーバーとして利用することができます。そもそもNginxが開発されたのは、Apache HTTPDのロードバランシング機能に対するパフォーマンス不足からでした。そのためNginxのロードバランシング機能はパフォーマンスが高く、またさまざまな付加機能を持ち合わせています。 例えばHTTPSとロードバランサーを組み合わせHTTPSアクセラレーションを実現したり、W
瞬間的な高負荷に耐える為にアプリケーション側を変更せず、nginxの設定のみで対応する方法 CDNとは、「Contents Delivery Network」といわれるもので、最適なネットワークを経由してWebコンテンツをキャッシュし効率的に配信できる物です。Amazon(AWS)では「CloudFront」というサービスがあります。他にも「Akamai」などが有名です。 前提条件 バックエンドにProxyするCMSを使う(ここではPlone) (画像等も静的なデータではなくCMSから配信) 今回の実験 CDNには、Amazon(AWS) CloudFrontを用いた nginx - Varnish - CMSアプリ(Plone(複数台))という構成(当社が普段から使っている構成) 画像やファイルなどのみをCDNから配信させる 画像やファイルのオリジナルは、Plone内つまり、同じngin
Randen Pederson 大規模なシステムであれば使っているであろうリバースプロキシ。 セキュリティや稼働率の観点からみて利用することは非常にメリットは高いです。 ただ、社内や周りであまり知見がなく、 「動くからいいや」という理由でApacheをそのままWebサービスの一次受けとして利用されている方も多いと思います。 動くという目的からすれば確かにその通りですが、ただ一枚リバースプロキシを入れるだけで ぐっと運用効率、稼働率も拡張性も上がります。 1. ルーティング処理の簡略化 例えばRESTfulな一般的なAPI構成を作りたいと思った時に以下のようなURL構成になると思います。 http://api.something.com/search/v1/item/list.json?cid=xxxx&gid=xxxxx もしアプリケーション側のルーティングしか知らなければframewor
Kibana や Grafana を使う時に、これらはjsのツールなので、 Erasticsearch や InfluxDB といったバックエンドサービスにjsからアクセスできるようにする必要がある。 そのためには、 普通にバックエンドサービスのportを開放 nginxとかでリバースプロクシ とかする必要があり、めんどくさい。 さらにセキュリティのことを考えると、2の方法のうえに、nginxでSSL+Basic認証なんかにする必要があってよりめんどくさい。 さらに、僕はBasic認証が嫌いだ。 昔は Firefox + 1Password で良い感じにBasic認証の入力が行えたが、いまはだめになってしまったし、 Basic認証だとアカウントの管理もめんどくさい。 なので、Google認証なhttpdでリバースプロクシもできる、gateというツールを作った。 https://github
環境構築 普通に Boot2Docker をMacにインストールしました。Boot2Dockerは ここのブログの中ほどの画像のようにVitualBox上でDockerサーバーを動かし、Macの dockerコマンドがDockerサーバーと通信して動作します。 Dockerサーバーの作成・起動などは boot2docker コマンドで行います。 作成・起動は、 % boot2docker init % boot2docker up これで、dockerコマンドが使えるようになりますが、通信用のDOCKER_HOST環境変数を設定する必要があります。 % export DOCKER_HOST=tcp://192.168.59.103:2375 % docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE nginx latest c
はじめに railsとwebサーバを連携する場合はapache × passengerまたはnginx × unicornのどちらかを使用することが多いかと思います。 昔はwebサーバといえばapacheでしたが、最近はかなりnginxが使われてきています。 apacheとnginxのを比較したときに、静的ファイルはnginxが動的ファイルはapacheが早いと言われています。 そこで今回はnginxにリバースプロキシの設定をし、apacheと連携してみました。つまりhtmlや画像などの静的ファイルはnginxで処理し、railsの処理はapache経由で処理させることをやってみました。 開発環境 今回はmacのvirtual boxにubuntuをインストールし環境を構築しました。 ubuntu 12.04 32bit apache 2.2 nginx 1.6 ruby 2.00 rai
Modern Ciphersuite: ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES1
nginx & unicorn で設定してるときに気になった箇所のメモ書き proxy_redirect レスポンスヘッダのうち Location Refresh の書き換え。 Location ヘッダ 201 のとき、新しく作られたリソース(URL)を返す 3xx のとき、リダイレクト先のURLを返す ためのヘッダ 設定例 もし下記のように nginx を設定していて proxy_redirect http://localhost:8000/two/ http://frontend/one/; Location: http://localhost:8000/two/some/uri/. というレスポンスヘッダが返ってきたら、nginx はそれを Location: http://frontend/one/some/uri/. に書き換える。デフォルトは proxy_pass にならう。下
Dockerすごい面白そうです。 最近ハッカソンに行ったりして、プロダクション環境へのデプロイ周りですごいはまった。特にお金もない自分は1つのサーバーの中にいろいろとアプリケーションをデプロイしちゃっている訳ですが、もうごちゃごちゃになって触りたくなくなりそう...。新しくサーバーをデプロイしたいけども、既存のサービスまで影響が及ぶ危険性もあり、めんどくさいなー。あと、あとできっと破棄するだろうけど、もとに戻すこともかなりめんどくさいし、そんなことやりたくないしなー。もっとアプリケーション毎に気軽に(そしてお安く)デプロイ出来ればいいのになー。 と思っていた訳ですが、最近Dockerというものを目にしまして。 Docker, Mesos, Sensu等を利用したBlue-Green Deploymentの仕組み 本番環境のBlue-Green Deploymentの仕組みのプロトタイプを作
さくらVPSにJenkinsを入れた時のメモ。 さくらVPSを使うかAmazon EC2を使うか迷ってたのですが、その辺の経緯はまた別の機会に書きます。 1. さくらVPSに登録する http://vps.sakura.ad.jp/ お好みのプランを選択。僕は2Gを選びました ログイン情報がメールで来るまで少しラグがあるため、その間にインスタンスを立ち上げます さくらインターネットVPSコントロールパネル 2. ログインしてユーザを作る メールがきたらログインできます ssh root@【さくらVPSのホスト名】 でログイン Are you sure you want to continue connecting (yes/no)? って聞かれるのでyesを入力。あとはメールに書いてあったパスワードを入れる 下記を参考にユーザ追加とsshの公開鍵登録までやる 「さくらのVPS」借りてみた(
前回と前々回の続き。 今回はvarnishの設定。 各設定の補足はコメントにて記載。 *設定 # # backend # backend app { .host = "app.hogehoge.com; .port = "80"; } # # acl purge setting # acl purge { "localhost"; "127.0.0.1"; } sub vcl_recv { set req.grace = 300s; ## 不正なmethodは拒否 if (req.request != "GET" && req.request != "HEAD" && req.request != "POST" && req.request != "PURGE" && req.request != "BAN") { error 403; } ## purgeの設定 if (req.requ
Nginx 1.4.2で試しました。 ネームサーバーは、ローカルのunboundをlocal-zone, local-dataを使って簡易コンテンツサーバーにして試しました。 local-zone: "oreno." static local-data: "api.oreno. 30 IN A 192.0.2.11" # local-data: "api.oreno. 30 IN A 192.0.2.12" proxy_passにホスト名を書くと→名前解決は一度だけ このように Nginx の設定を書いた場合、 location /api { proxy_pass http://api.oreno:9999; } 「api.oreno」の名前解決は、nginxの起動時に行われます 名前解決できない場合は、nginxは起動しません 名前解決できた場合は、ずっとそのIPアドレスにreverse
背景 自前のサービスでhttps通信をサポートするには、SSL証明書が必要になります。 自分で使用するだけなら、SSL証明書も自前で作成するいわゆるオレオレ証明書を用いても良いのですが、外部に公開するサービスの場合そうとも行きません。 SSL証明書というと値段が高い印象がありましたが、StartSSLというサービスで無料でSSL証明書の発行を受けられると言うことで試してみました。 StartSSLにユーザー登録する 証明書の発行を行う前に、StartSSLにユーザー登録する必要があります。 StartSSLから、"StartSSL Free (Class1)"を選択します。 Certificate Control Panelを選択。 Sign-upに進みます。 名前、住所、メールアドレスなど 個人情報の登録を行います。 登録したメールアドレスに本人確認のメールが届くので、受信したメールのa
最近あまりネタがないのでが、このままだとまた何週間も投稿なしになりそうなので、以前やった nginx による SSL リバースプロキシの構築方法を備忘録的に書いてみます。開発目的で GAE の dev_appserver.py を SSL 化するために使っただけですが、パッケージシステム等を使わずにソースからビルドし、一般ユーザー権限でインストールする方法にしています。ごく基本的な内容ですが、参考にしていただければ幸いです。 nginx とは nginx は Tornado などと同様の非同期イベントドリブンモデルを採用した HTTP サーバーです。 BSD に似たライセンスのオープンソースソフトウェアとして公開されています。プロセス・スレッドモデルを採用した Apache などよりも多数のコネクションを効率よく処理できるため、多くの高負荷サイトで採用されています。現在 Apache, I
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く