Carpe Diem

備忘録

Nginx

Circusを使ってgraceful restart

概要 Nginx + GoのApp という構成をとっている時に、単純にデプロイでGoだけ更新するとNginxからは [error] 1413#1413: *1 connect() failed (111: Connection refused) [error] 1412#1412: *3 connect() failed (111: Connection refused) [error] 1412#141…

負荷が低いのにアクセスを捌けきれない時の対応

概要 MongoDBでCPU使用率やロードアベレージが高くないのに処理が詰まっている現象が起きました。 その時間にbatchが動いていてアクセスが急に増えることが原因と言うのは分かっているのですが、負荷的には十分余裕があり不思議な状態でした。 そこでdstatで…

remote_addrとかx-forwarded-forとかx-real-ipとか

背景 ECSでNginxのコンテナをプロキシとして立てたところ、APIサーバのアクセスログのクライアントIPがNginxのコンテナIPになっていたのでその修正をしたのがきっかけです。 環境 Nginx 1.10.2 Docker1.12.1 構成 Client -> ELB -> Nginx -> API という構成…

NginxでHTTP/2(ALPN対応)

概要 以前NginxでHTTP/2 - Carpe Diemを書きましたが最近改めて確認してみると のようにHTTP/2が使えていないことが分かりました。今回はこの問題に対応します。

ELB+nginxでbasic認証をかける方法

概要 開発環境では外部に見られないようにbasic認証をかけることが良くあります。 一方でELBのHealthCheckはbasic認証がかかったパスだと401エラーが返り、そのままだとOutOfServiceとなって接続することができません。 今回はそんな時の対応方法です。Nginx…

NginxでHTTP/2

概要 Nginxが1.9.5からHTTP/2に対応しました。 ソースからmodule指定でビルドする必要もなく、mainlineの1.9.5をパッケージでインストールすれば使えます。 環境 Ubuntu 14.04 Nginx 1.9.5 Nginxインストール Nginxの最新版をインストール(パッケージ管理)…

Nginxのログをlogrotateでローテーション

概要 アクセスログをそのままにすると肥大化するので、ローテーションして分割する必要があります。 環境 Ubuntu 14.04 Nginx 1.4.6 logrotate 3.8.7 Nginxの用意 $ sudo aptitude install nginx インストール後、自動でlogrotateのnginx用設定が/etc/logrot…

Nginx でリバースプロキシを設定

概要 1024番以下のポートを使用する場合、root権限がいるためnodeやrailsでは直接80番や443番を使えません。 そんなときにポートフォワードするためのリバースプロキシをnginxで構築します。 環境 Ubuntu 14.04 Nginx 1.4.6 Node 0.12.3 Nginxの設定 最低限…

AnsibleでNginxをソースからインストール

概要 AnsibleでNginxをソースからインストールする場合、冪等性はどうなるんだろう?と思って作ってみました。 実際作ってみたら結構色んなモジュールを使って勉強になったのでそのメモとして。 今回は「NginxでRTMPストリーミングをする」をAnsibleでできる…

NginxでRTMPストリーミングをする

概要 RTMPでストリーミングを試してみます。 環境 Ubuntu 14.04 Nginx 1.7.9 RTMP対応のNginxのインストール まずビルドに必要なパッケージをインストールします。 $ sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev unzip

SPDYを導入してみる

概要 SPDYはGoogleがWebの表示を高速化するために開発した、新しいプロトコルです。 導入の注意として Apacheでは現在2.2.xでしか対応してないので、2.4.xの場合ダウングレードする必要がある Nginxでは1.5.10以降じゃないとデフォルトで入っていないので、…

Nginxの最新版をインストール(パッケージ管理)

概要 デフォルトのUbuntuパッケージでは1.4がインストールされますが、SPDYなど使いたいモジュールがデフォルトで入っていないので最新版をインストールします。 Nginxでは主に以下の2つのバージョンが用意されています。 stable:バグフィクスのみ入る mai…