セキュリティ対策などでWebサーバ側で指定した方が良いヘッダー。 ありそうでまとめられてなかったので投稿しておきます。 2016-02-05 update まだストックされる方がたまにいるようなので、簡単に更新しました。 XSS対策 nginx
NginxとApacheを共存させる場合、Nginxをリーバスプロキシにして、Apacheをバックエンドにする構成が通常。 単純にリバースプロキシを動かすと、Apache側に伝わるクライアントのIPアドレスが全てNginxのアドレスになってしまうため、この対応を入れつつ設定を行う。 1. Nginxのプロキシ設定 /usr/local/nginx/conf/nginx.confに、以下の通り追加。 server { listen xxx.xxx.xxx.xxx; server_name hoge.com; # このサーバへの全てのアクセスを転送 location / { proxy_pass http://127.0.0.1:8080; #proxy_redirect off; # この設定がなくても.htaccessでの制限は可能。 # ただし、cgi等から参照した際にNginxのIPア
はい、これは僕がいつも良く見る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
Apacheのmod_rewriteをmod_mrubyによって無くすことを考えた時に、現状mod_rewriteでやれることをmod_mrubyに置き換えるとどうなるのかを検証・考察してみました。 なぜかというと、mod_rewriteで困っているような呟きをいくつか見て、以下のように思ったからです。 apacheでrewriteが面倒な人はmod_mrubyやmod_luaを使っちゃっても良い気がするなー。誰かがやり出すとどんどんやり出しそう。性能劣化も少ないし。 — MATSUMOTO, Ryosukeさん (@matsumotory) 10月 21, 2012 以前こんな記事「Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?)」を書いたのですが、これも深く関連しています。現状、いったいmod_mrubyはどこまでmod_rewrite
先ほど、Kageというgemが公開されました。 https://rubygems.org/gems/kage https://github.com/cookpad/kage このgemは、クライアントからのリクエストを複製し、バックエンドの複数のサーバに同じリクエストを送る事が出来ます。これを使うことで、これから本番に適用するコードの負荷試験や、書き込みをDummyDBに逃がして、slaveを本番に接続するなどして本番データを使用した負荷テスト、ミドルウェアのバージョンアップのテストを行うことが出来ます。 実際にクライアントに返されるレスポンスデータはproductionサーバとして指定されたサーバから返却されるため、本番のリクエストを使用してテストが簡単に行えるようになります。 実際に本番のアクセスを流す方法にはいくつかあると思います。Kageが導入されたサーバに直でトラフィックを流す方
nginxやvarnishなどがアツいですが、Apacheもまだまだ実績や安定性から採用されていると思います。ここではデフォルトとは異なる値に変更するサーバ設定を中心に、パフォーマンス改善、安全性向上のためのApacheの設定を紹介します。 mpmの確認 > /path/to/bin/httpd -V Server version: Apache/2.2.19 (Unix) Server built: Jun 23 2011 17:13:13 Server's Module Magic Number: 20051115:28 Server loaded: APR 1.4.5, APR-Util 1.3.12 Compiled using: APR 1.4.5, APR-Util 1.3.12 Architecture: 64-bit Server MPM: Worker PreforkやW
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 mod_mrubyからAPIつついてなんか面白い事できないかなぁと考えていたら、GrowthForecastというURLにデータをPOSTするだけでグラフが作れるという素晴らしい管理ツールがあったので、Apacheの内部データをGrowthForecastにmod_mruby経由で送ってグラフ化してみました。 GrowthForecastをインストール このインストールページを参考にインストールすればいいだけでした。ソースダウンロード後はGrowthForecast/ディレクトリでcpanmコマンドを叩くだけで、何よりcpanmコマンドが便利過ぎて感動しました。 cpanm --installdeps . そして、以下のコマンドでGrowth
この記事は古くなりました。新しい知見は下記を参照。aoking.hatenablog.jp 概要 全文検索エンジン Solr を使用していて、パフォーマンスチューニングに四苦八苦した話。 ここでは、検索時ではなくドキュメントの追加時についてのチューニングについて記してある。 更新自体は参照に比べて頻度が少ないが、参照はレプリケーションして負荷分散しやすい。 更新は整合性を保つために一台のマスターノードに対して行われるので更新はボトルネックになりやすいのだ。 定期的に IO 負荷が高くなる Solr を使っていると、一時的に猛烈に IO 負荷が高まる時がある。fsync になんと1分以上かかるような、猛烈な負荷だ。 これはインデクスのマージ時に起きる IO 負荷で、巨大なインデクス同士のマージだとその合計サイズ分の IO が発生することで IO 処理が専有されたままになっていた。 インデクス
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 さてさて、これまでの研究の論文化や研究会発表等が落ち着いたので、mod_mruby触ってます。 mod_mruby – Github 前回、mod_luaにパフォーマンス面で完敗したわけですが、ついにやりました。mod_luaを超えてやりましたよ! 工夫した所 何を変えたかいうと、前回の実装ではmrubyスクリプト実行毎に、 mrb_open()実行 mrb_define_module()やmrb_define_class_method()を実行 mrb_parse_file()実行 mrb_generate_code()実行 mrb_run()実行 していました。しかし、Apacheの特性上プロセスやスレッドをプールさせて使いまわすため、少
mod_small_light - Dynamic image transformation module for Apache2 ============================================================================== The mod_small_light provides a dynamic image transformation. Build Environment ----------------- Supported Platforms: GNU/Linux, and other operating systems support GCC. Build ----- Simply run the configure script with --with-apxs option for analyzing you
mod_redis This Apache module uses a rule-based engine (based on regular expression parser) to map URLs to REDIS commands on the fly. It supports an unlimited number of rules and can match on the full URL and the request method (GET, POST, PUT or DELETE) to provide a very flexible option for defining a RESTful interface to REDIS. By default the module returns an XML representation of the resulting
自信のないタイトルは1年前に「2011年には流石にリリースされると思います」と書いてしまった反省からです。 リリースに関わっているわけでもないのに根拠のない予言をするものではありません。更にさかのぼること3年前には、Apache2.4カウントダウン?のタイトルで記事を書いています。もはや狼少年状態です。 Apache2.4の新機能の中で意外にフィーチャーされていませんが、個人的な注目はevent MPM(とAsynchronous support)です。いわゆる非同期I/O動作のイベントドリブンなmpmです。非同期I/Oのイベントドリブンと聞くと、nginxと同じ動作?と思う人もいるかもしれませんが、動作モデルは異なります。 Apacheを知っている人は、event mpmがバージョン2.2から存在するのを知っているかもしれません。バージョン2.2では実験的(experimental)mp
大規模データの分散処理を支えるJavaソフトウェアフレームワークであり、フリーソフトウェアとして配布されている「Apache Hadoop」。その作者ダグ・カティング(Doug Cutting)さんが「Cloud Computing World Tokyo 2011」&「Next Generation Data Center 2011」において「Apache Hadoop: A New Paradigm for Data Processing」という講演をしていたので聞きに行ってきました。 満員の客席。 皆様を前にして講演できることを大変光栄に思っております。「Apache Hadoop」について皆様に伝えていきますが、これはまさにデータ処理の新たなるパラダイムを提供するものではないかと私は思っております。 まずは簡単に自己紹介をさせていただきましょう。私は25年に渡ってシリコンバレーで仕
公開: 2011年8月30日1時45分頃 ApacheのDoSの脆弱性が話題になっていますね。 HTTP/1.1では、HTTP要求ヘッダでRangeフィールドを指定すると、コンテンツの全てではなく一部分だけを要求することができます。たとえば、以下のように指定するとデータの先頭の1バイトだけを受け取ることが期待されます。 ※これは以前にも書いたのですが、0-0で1バイト受け取るというのは微妙に直感的ではない感じがしますね。しかし正しい挙動です。 WebサーバがRangeを解釈した場合、ステータスコード 206 (Partial Content) で応答しつつ、指定された部分だけを返します。 と、これだけならRangeがない場合とサーバの負荷はほとんど変わらないのですが、実は1回のリクエストで複数の範囲を指定することができます。その場合、応答は Content-Type: multipart/
【説明】 apacheのベーシック認証のパスワードを設定する際に使用します。 htpasswdコマンドを使って、apacheベーシック認証用のファイルを作成します。最初はパスワードファイルを作成するために「-c」オプションが必要です。「-c」オプションの後にはパスワード情報を格納するためのファイルを指定します。「-b」オプションを指定した場合、コマンドラインからパスワードが設定できます。「-n」オプションを指定した場合、パスワードファイルを指定する必要はありません。 【構文】 htpasswd [オプション] [パスワードファイル] [ユーザ名] [パスワード] 例 testユーザのベーシック認証パスワードを設定します。
Webの開発者をやっていると良くいわれていることですが、HTTP GETメソッドを使うなという話を聞きます。セキュリティの点もありますが、HTTP GETメソッドですべてのパラメータをサーバに送れないからというのがその理由のようです。 実際どこからでているのか、現在もそうなのか?という疑問を感じたので、HTTP GETの制限を調べてみました。 RFCではどうなっているの? まずHTTP1.1のRFC2616を調べました。 とりあえず、日本語訳がありましたので、引用いたします。http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616より HTTP プロトコルでは、URI の長さにどんな制限も設けていない。 サーバは、自身が持つどんなリソースのURI も扱えなければならないし、もしそのような URI を生成する GET ベースのフォームを用意するなら、無
h5ai larsjung.de Apacheのディレクトリインデックスをありえない位かっこ良くできる「h5ai」 HTML5の機能を使って、通常の味気ないディレクトリインデックスをかなりかっこ良くしちゃうというものです。 ディレクトリ一覧。アイコンなんかもついてかなりリッチ mod_headersとmod_autoindexというApacheモジュールを応用して作られているようですが、こんなことが出来るとは知りませんでした。 表示方法もアイコンベースに変更することも可能です。これはイカしていますね。 サイドの丸みを帯びた物体にカーソルをあわせるとニュイーンと伸びてツリービューが表示。これまた便利です。 動作デモはこちら デザインは基本的にHTML+CSSなので、あなた好みにカスタマイズすることも可能。 Apacheの味気ないデザインページは嫌だ!というデザイナーさんは覚えておくとよさそう
ツイッターで「Apacheログをtail中にステータスコード部分だけに色つけしたい」ってのを見たので作ってみた。 #!/bin/sed -f ## MEMO # [0m reset # [1m bold # [3m italic # [4m underline # [5m blink # [30m black # [31m red # [32m green # [33m yellow # [34m blue # [35m magenta # [36m cyan # [37m white s/\(HTTP\/1..\"\) \(2[0-9][0-9]\) /\1 \x1b[34m\2\x1b[0m / s/\(HTTP\/1..\"\) \(3[0-9][0-9]\) /\1 \x1b[32m\2\x1b[0m / s/\(HTTP\/1..\"\) \(4[0-9][0-9]\) /\1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く