nginxのアップストリームを変更する 通常nginxでアップストリームの変更をするにはnginx.confを変更した後、nginxをreloadないしはrestartしなければなりません。例えば以下のようにアップストリームが定義されている場合、
![ngx_dynamic_upstreamでnginxのアップストリームを動的に変更する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/48f36819c284d20c4571df45d90822d7f1e156ad/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9bmd4X2R5bmFtaWNfdXBzdHJlYW0lRTMlODElQTduZ2lueCVFMyU4MSVBRSVFMyU4MiVBMiVFMyU4MyU4MyVFMyU4MyU5NyVFMyU4MiVCOSVFMyU4MyU4OCVFMyU4MyVBQSVFMyU4MyVCQyVFMyU4MyVBMCVFMyU4MiU5MiVFNSU4QiU5NSVFNyU5QSU4NCVFMyU4MSVBQiVFNSVBNCU4OSVFNiU5QiVCNCVFMyU4MSU5OSVFMyU4MiU4QiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9ODE1Mzc1ZWZmOWVmZGEyMjZjMWZiZTZiOGUyNWY4YWI%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBjdWJpY2RhaXlhJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lN2JiODU0MjRmZmJlOTBiMzY5ODU1YTBhMzdiYmFmMA%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4gTWVyY2FyaQ%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D923fb9e584a4d91532b445e4054c3c53)
今回はHTMLやCSS、Javascriptといった比較的軽量な静的コンテンツの配信をnginxでやるケースに絞ってチューニングする際のポイントについて紹介しようかと思います。 (注:worker_rlimit_nofileやsysctl.confのネットワーク周りの設定のような定石的なチューニングについてはあえて解説しないのであらかじめご了承ください。) コンテンツをgzip圧縮する 何はともあれgzip圧縮です。ネットワーク帯域に比べればCPUリソースなんて安いものです。 しかし、多くの場合これだけでは十分ではありません。何故ならnginxはデフォルトではContent-Typeがtext/htmlのコンテンツしか圧縮しないためです。圧縮対象のContent-Typeを増やすにはgzip_typesを使います。 単純なWebサイトであれば上記の設定で十分ですが、場合によってはappli
福田です。今日は、月100万リクエストを超えるアクセスを支えるこのVPSのシステム構成とかを公開しようと思います。その気になれば3コア、2GBしかないメモリでも余裕でさばけるっていうわけです。 OSは何使ってるの?OSは、日本で業務に使用しているところは少ないUbuntuのLTS(バージョンは書きません)を利用しています。 Ubuntuを使う理由としては、HHVMとかを入れやすいところにあります。その他のソフトウェアもCentOSとかRHELより豊富だったりします。あとは、慣れっていうのもあります。サーバで使用しているソフトウェアは?100万リクエストにさくさく応えるために、Nginxを利用しています。表面上はフルスロットルってなっていますが、これはNginxのソースコードをいろいろ書き換えたりして運用しているためにあえて変えてある仕様となっています。Nginxでも、何重にもキャッシュをか
解説 worker_processes auto; - Nginx本体のプロセス数、autoにしてnginx内部判定に任せるのは賢明 worker_rlimit_nofile 100000; - workerプロセスが最大に開けるファイル数の制限。このように設定したら、ulimit -a以上のファイル数を処理できるようになり、too many open files問題を回避できる worker_connections 2048; - 一つのworkerプロセグが開ける最大コネクション数 multi_accept on; - できるだけクライアントからのリクエストを受け取る use epoll; - Linuxカーネル2.6以上の場合はepoll、BSDの場合kqueue server_tokens off; - セキュリティ対策です、エラー画面のnginxバージョン番号を非表示 sendf
はじめに 本番はELBへのアクセスをHTTPS通信を行い、開発等では通常のHTTPで構築をすると言ったケースもあるかと思います。 そういった場合においてELBからアプリケーションへの転送をHTTPとして構築した場合、 アプリケーションをELB配下に持っていた際にも動く事を意識して開発を進める必要が有ります。 ただ、そういったケースにおいて、アプリケーションを実装を確認するにはどうすればよいでしょうか。 AWSを用いて環境を立ち上げるのも手ですが、 確認したいのはELB配下にHTTPで通信を待っているアプリの挙動を確認するといった際に、 ちょっと大げさな話になってしまいます。 そういったケースにおいて手元で確認したいと言った際に、以下の方法で試す事が可能です。 ELB配下のアプリケーションはELBにきたHTTPSアクセスを認識することができるのか? ELBのフロントエンドをHTTPSとしバッ
NginxでIf文を if ($host = 'www.example.com' && $request_uri ~ "/admin") という風には書けない。 入れ子にもできません。(ディレクティブなので?) そこで逃げ道は 文字列結合で判定。 if ($request_uri = /) { set $test A; } if ($host ~* teambox.com) { set $test "${test}B"; } if ($http_cookie !~* "auth_token") { set $test "${test}C"; } if ($test = ABC) { proxy_pass http://teambox-cms.heroku.com; break; }
ベトナムにおけるBacklog活用のリアル ベトナムにおけるBacklog活用のリアル backlog Backlog の Amazon EKS クラスターを Blue-Green アップデートするためにやっていること Backlog の Amazon EKS クラスターを Blue-Green アップデートするためにやっていること backlog 2023年最も素晴らしいプロジェクトを表彰!Good Project Awardを開催しました 2023年最も素晴らしいプロジェクトを表彰!Good Project Awardを開催しました backlog Backlog開発者が夫婦の不和をなくす家庭管理アプリを作ってみた話 Backlog開発者が夫婦の不和をなくす家庭管理アプリを作ってみた話 backlog 創業からもうすぐ80年の老舗企業!ミートボールでおなじみの石井食品様で、プロジェクト
nginx では1プロセスで多くのアクセスを捌くので、アクセス数が増えるとToo many open filesエラーが発生することがあります。 ここでは対処法と調べた内容を残しておきます。 1. fs.file-max の確認 まず fs.file-max の値を確認しておきます。fs.file-max は、システム全体でのファイルディスクリプタの上限数となっており、この値以上のファイルディスクリプタは確保することができません。 現在設定されている値は以下で確認できます。 $ cat /proc/sys/fs/file-max 167488 通常は上記の値で問題無いと思いますが、もしこの値が不足しているようなら設定値を更新します。 $ sudo -s # echo 320000 > /proc/sys/fs/file-max # cat /proc/sys/fs/file-max 320
先日スノボ行ったらコケて肋骨にヒビ入っちゃったんだよね。肋骨バキバキっと、、、まあそんな話はどうでもよくて・・・割とさっぱりした記事になっちゃうんだけど、このサイトはnginx + php(wordpress)で動いていてさっきSPDYを導入した。SPDYはHTTP1.1の次のメジャーバージョンであるHTTP2.0の礎となるプロトコルで、俺もかねてより注目していた技術なんだけど、ようやく重い腰をあげてワザワザ証明書を取得して試してみた。パフォーマンス検証とかはまだ全然していない。http -> httpsの書き換えがうまくいってなくて、はてぶとかいいね数が表示されてなかったりするのはちゃんと直さないとな。 1. おれのホームページに緑のイナズマが走った 稲妻バキバキっと。httpsでアクセスしてSPDY indicatorで見ると、一応SPDYなサイトとして認識してくれていることがわかる。
Google が提供してくれている高速化モジュール mod_pagespeed ですが、今までは Apache サーバ用のモジュールしかありませんでした。 以前、安定板が出た時に試してみましたが、中々感触が良かったです。 Apache サーバ向け高速化モジュール mod_pagespeed Nginx 用のモジュールも提供してくれないかなーとか思ってたら…出てましたよ!奥さん! というわけで、とりあえずインストールしてみました。 どんな状況になるかは、このサイトの html ソースを見てみてください。 ※:現在 ngx_pagespeed モジュールは無効にしてあります ngx_pagespeed 入りの Nginx のビルド – インストール Nginx では、サードパーティモジュールの動的読み込みができないため、ソースからビルドしてやる必要があります。 基本的に github の ng
はい、これは僕がいつも良く見るApacheとNginxの性能差に見えます。大体、ApacheはNginxの75%程度の性能に落ち着きます。数十バイトの静的コンテンツに対するリクエスト処理はNginxの得意分野だと思っていたので、大体こんなものです。 そこで、真面目にevent_mpmのチューニングを行ってみました。で、幾度となくベンチを試した結果導き出した、静的コンテンツに対する同時接続数100程度に対して最高のパフォーマンスを示すevent_mpmの設定は以下のようになりました。 [program lang=’apache’ escaped=’true’] StartServers 4 MinSpareThreads 4 MaxSpareThreads 4 ThreadsPerChild 2 MaxRequestWorkers 2 MaxConnectionsPerChild 0 [/p
This document discusses using Nginx as a web server with PHP. It provides configuration examples for using Nginx with PHP-FPM to pass PHP requests. Benchmarks show Nginx performs better than Apache. It also discusses using Nginx as a reverse proxy cache, and provides configuration examples to cache content and pass caching controls from PHP.Read less
今回作るシステムは、静的コンテンツを配信するサーバがすでにあり、 ・認証機構(ログイン画面)を追加 ・変更を最小限に抑えて開発 ・スケールアウトしやすい ・アクセス数が多いので、できるだけ処理を軽くする ことを目的とします。 この手のシステムは、既存システムに手を入れるのが普通ですが、既存システムでプログラムが動かないことには話になりません。 という事で、認証機構を追加したプロキシサーバを作成することで実現したいと思います。 仮に、PHPのみを使用して実装する場合は、下記のように出来ます。 ・ログイン画面はPHP ・rewriteでログイン画面系以外の全てのアクセスをindex.phpに向ける ・認証に失敗したらログイン画面にリダイレクト ・認証成功したら認証状態をセッションに記録(有効期限も記録) ・セッションはmemcacheなどで全サーバ共有 ・セッションの値が有効なときはコンテンツ
この投稿は 11年半 前に公開されました。いまではもう無効になった内容を含んでいるかもしれないことをご了承ください。 さて、つい昨日Tips記事を収益化できないかなという邪な感情から「WordPressで管理画面以外から投稿させる機能を作る」というエントリーをぶち上げたのですが、コンテンツ公開後、コーディング画面を録画したビデオがダウンロードできないという報告を受けてしまいました。 端的にいうと、270MBという巨大なファイルだからダウンロードできなかったわけです。 この動画がダウンロードできなかった 一応有料で販売しているものなので、こりゃまずいと直しにかかったのですが、異常に時間がかかりました。これはその闘争の記録です。 Apache + mod_phpで巨大ファイルをPHPでダウンロードさせる さて、今回のように、サーバにぽこっとファイルを置いておくだけではなく、PHPでユーザーにア
「ニフティクラウドユーザーブログ」は、移転しました。 自動でページを移動しない場合は、下記のリンクをクリックし、 新しい「ニフティクラウドユーザーブログ」をご覧ください。 今後とも「ニフティクラウドユーザーブログ」をよろしくお願いいたします。 > ニフティクラウドユーザーブログ
仕事でhttpとhttps両方使う必要がでてきた。 サーバー構成は複数のアプリサーバーをロードバランサーで処理振り分けをする、よくあるタイプ。 問題はhttpsで、複数あるアプリサーバーにそれぞれSSL証明書をインストールすると、手間もかかるがお金もかかるので控えたい。 そこで、サーバー1台をロードバランサーとして仕立て上げ、そのサーバーにだけSSL証明書をインストールし、処理の振り分け先のアプリサーバーはすべてhttpで処理するといいんじゃないか、と考えた。 apacheでも同じこと出来ると思うが、軽量高速と評判 のnginxを使う。 なんと言っても、設定の単純さが際立つ。 nginx.conf 設定例 user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; e
locationディレクティブはパスの条件が評価されて選ばれたものが適応されます。この条件はパスの文字列の前方一致あるいは正規表現による評価です。この評価の順番は以下のようになります。 前方一致("=", "^~", プレフィックスなし)の条件の評価を実施 最も一致する条件を選ぶ。 選ばれた条件が、完全一致で、プレフィックスが"="であれば、そこで評価を終了し、そのlocationディレクティブを適応する。 選ばれた条件のプレフィックスが"^~"であれば、そこで評価を終了して、そのlocationディレクティブを適応する。 正規表現("~", "~*")の条件の評価を実施 正規表現の条件を設定ファイルに定義した順番に評価する。一致したら、そこで評価を終了して、そのlocationディレクティブを適応する。 前方一致の評価で選ばれた条件のlocationディレクティブを適応する。 ここで注意
Webサイトでいろいろなサイズの画像を使いたいとき、URLのパラメータを変えるだけでサイズ変換してくれると非常に便利です。クックパッドのTOFUとかわりと有名ですね。開発効率も上がるし、面白そうだったのでNginxで実装してみました。 TOFU : 料理を楽しくする画像配信システム フルサイズの画像 元の画像です http://pic.kksg.net/shirakawago.png 比率固定リサイズの画像 /scale/128x128 を挟むと縦横の最少が128pxの画像になります。 http://pic.kksg.net/scale/128x128.shirakawago.png サイズ指定切り抜き c オプションで切り抜き。指定サイズいっぱいに、いい感じに切り抜きます。 http://pic.kksg.net/scale/c.600x150.shirakawago.png グリッチ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く