うまいぼうぶろぐ

linuxとhttpdとperlのメモ

apache

共用サーバの接続制限で良さげなapache module - mod_vhost_maxclients

ペパボの中の人さまさま。 https://speakerdeck.com/matsumoto_r/virtualhosting-security-performance-operasion http://hb.matsumoto-r.jp/entry/2015/08/29/151920 https://github.com/matsumoto-r/mod_vhost_maxclients virtualhostごとに同時アクセス数…

apache suexec + php cgi mode (mod_action) 復習

復習。 以前はsuPHPを試したこともあるけど d.hatena.ne.jp php 5.3から各コンテンツディレクトリで.user.ini 置くことで 設定上書きできるようにもなったので、apacheとphpだけのsimple構成を復習する。 概要 suexecしてcgiはユーザ権限で動かす phpはmodul…

apache でload average の値によってページを差し替えるサーバ負荷に優しい方法

# aws でauto scaling しろよ、というのはさておき http://httpd.apache.org/docs/2.2/rewrite/rewritemap.html http://httpd.apache.org/docs/2.2/programs/httxt2dbm.html RewriteMap で外部のファイル/コマンドを実行した値を変数に入れて、RewriteCond …

RHEL yum でinstallしたapache はLoadModuleからsuexec_module を決しても/usr/sbin/suexecがあるとsuexecが有効になるみたい

# source installした場合は試してない。httpd.conf (or includeされているその他のfile)でloadmoduleしている場合 $ grep suexec httpd.conf LoadModule suexec_module modules/mod_suexec.so $ httpd -M 2>&1 | grep suexec suexec_module (shared)起動時…

apache 400 エラーページについて

http://httpd.apache.org/docs/2.4/en/custom-error.html http://httpd.apache.org/docs/2.4/ja/custom-error.html documentに明示されていないけど、400 エラーについては ErrorDocument 400 /error/400.htmlのようなファイルパスは使えない。こっち ErrorD…

RewriteRule でredirect時にquery stringを削除する

久々すぎて完全に忘れてた https://wiki.apache.org/httpd/RewriteQueryString Removing the Query String Delete the query string entirely.RewriteRule ^/page /page? rewriteruleでredirect時にquery stringを削除するには置換後のURLの末尾に"?"をつけ…

apacheのdefaultのlogformatを少しだけいい感じにカスタマイズする

一部でLTSVが流行っていたりしますが、いまはそれは考えません。 apacheのdefualt のcombined LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 少しだけいい感じにしたformat LogFormat "%a %l %u %t \"%r\" %>s %b \"%…

apache AddHandlerはAddTypeより優先される?

AddHandler/AddType: 特定の拡張子に特定の動作をさせる設定。 AddType application/x-httpd-php .php AddHandler cgi-script .cgi例えばこう設定している場合、index.cgi をrenameして index.cgi.yyyymmdd などとしていてもcgiとして動作した。index.php を…

ab でPOSTのベンチマーク

-p postfile postデータを書いたファイルをで指定 -T content-type "application/x-www-form-urlencoded" を指定 postfileはURLエンコードしておく必要あり。複雑なPOSTデータの場合はngrep/tcpdumpしておきながら、一度ブラウザでPOSTしたものをコピペして…

mod_rewriteを書く場所によってRewriteRule がマッチする対象が異なる件

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule これちょいちょい忘れてはまる。ex: http://example.com/foo/bar/ => http://example.com/hoge/bar/ にリダイレクトいつもは基本的にvirtualhost内に書くからこう書いてる。 RewriteEngi…

mod_rewrite でBasic/Digest認証ユーザの名前を変数に利用する

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond Other things you should be aware of: の5番。 %{LA-U:variable} can be used for look-aheads which perform an internal (URL-based) sub-request to determine the final value of v…

mod_rpaf でオリジナルのクライアントのIPでアクセス制御できなくなってた原因

http://heartbeats.jp/hbblog/2012/03/mod-rpaf.html http://d.hatena.ne.jp/hogem/20090622/1245675445 http://stderr.net/apache/rpaf/ https://github.com/ttkzw/mod_rpaf-0.6 reverse proxy 配下にapache + mod_rpaf を使っている状況で、以前はmod_rpaf…

mod_cbandのCBandSpeed で帯域制限をすると設定値の約1/3のスループットしか出ない謎

http://d.hatena.ne.jp/hogem/20090808/1249658005 前から疑問に思ってたけど。帯域・同時接続数を制限するCBandSpeed の1つめの引数に帯域を設定できるけど、設定値の約1/3しか出ないっぽい? <VirtualHost *:80> ServerName foo.example.com # snip <IfModule cband_module> ## kbps rps max_con CBa</ifmodule></virtualhost>…

apache 2.4 source install

http://httpd.apache.org/ event mpmが実装されたりで楽しみな2.4系がstableになったのでとりあえず入れた。pcreが必要なので、pcre-devel を入れておく。 # yum install -y pcre-develapache 2.4系からapr, apr-util も別のsourceから取ってこないといけな…

apacheとnginxでX-Reproxyを使う

lighttpd でも使えるらしいんですが、個人的に使ってないので割愛 http://www.google.co.jp/search?gcx=w&sourceid=chrome&ie=UTF-8&q=lighttpd+x-reproxy X-Reproxy-URLはPerlbal + MogileFSなどでファイル配信する場合によく使う、とは聞いていたのですが…

apache mod_proxyに脆弱性 CVE-2011-3368

http://seclists.org/fulldisclosure/2011/Oct/232 http://www.contextis.com/research/blog/reverseproxybypass/ RewirteRule [P] / ProxyPassMatch の記述(変数のキャプチャ($1)の書き方)次第では、攻撃者にproxy先を任意のhostに変更されるという脆弱性。…

apache脆弱性対策 - Range header DoS vulnerability Apache HTTPD 1.3/2.x (CVE-2011-3192)

http://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/browser もうあちこちで大騒ぎになっていてみんな知ってると思うけど。HTTP Requestに非常に長い(コンマ区切りの複数のヘッダ) Rangeヘッダを送られるとapacheのプロセスがメモリ食い…

apache 2.2.15 から mod_reqtimeout とやらが使用可能になってた

http://httpd.apache.org/docs/trunk/new_features_2_4.html#newmods http://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html apache 2.4 からのnew modules だと思ってたら、2.2.15 から使用可能になってた。slowloris ようにrequestを完了させないでDo…

Centos rpm httpd 2.2.3 ではFileEtag None が無視される

− http://httpd.apache.org/docs/2.2/ja/mod/core.html#fileetag 諸事情でバージョン指定、というかrpm指定されたapacheを使っています。で、複数台のwebサーバのローカルディスクにコンテンツを置いているので、(inodeが違うためサーバごとにEtag ヘッダが…

debian apache2 suexec package

sourceではやったことあるけど、dpkg ではやったことないので。ref. apache + suexec, suphp apache2とsuexec install。 # apt-get install apache2 apache2-suexec suexecのconfigure option 確認 # /usr/lib/apache2/suexec -V -D AP_DOC_ROOT="/var/www" …

apache編 - error_logにfavicon.icoのFile not foundを出なくする

ref. nginx の favicon に関する設定メモnginxはlog_not_found off にすればいいだけなので、apacheではどうすれば良いかもちょっと考えてみた。(error logにこんなにこだわらなくてもいいんだけど) 案1: 空ファイル作る document root 以下を触れる環境にあ…

VirtualHost内のREQUEST_FILENAMEはREQUEST_URIと同じになる

ということをすっかり忘れていた。 http://httpd.apache.org/docs/current/mod/mod_rewrite.html 通常 %{REQUEST_FILENAME} はそのfileへのfull pathになるけど、VirtualHost内で使用すると%{REQUEST_URI} と同じになる。 REQUEST_FILENAME The full local f…

mod_evasive でアクセスを弾いたときerror codeを503にしたい

作者のblog ? http://www.zdziarski.com/blog/?page_id=442 ITproの記事 http://itpro.nikkeibp.co.jp/article/COLUMN/20070510/270527/ mod_evasive mod_evasive is an evasive maneuvers module for Apache to provide evasive action in the event of an …

apacheに設定されているSSL証明書のファイル名を表示

# httpd -t -DDUMP_CERTS

monitでbasic認証がかかったURLをcheckする

send/expectでheaderを指定する Authorization headerで送信する文字列。 $ echo -n user:pass | nkf -MB dXNlcjpwYXNzmkmonitのapacheの設定 check process apache with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" s…

apache のsourceに付属している起動scriptが間違ってる件

build/rpm/httpd.init。statusのとこの${pidfile} の変数が間違ってる $ diff -u httpd.org httpd --- httpd.org 2010-12-09 18:18:51.000000000 +0900 +++ httpd 2010-12-09 18:19:01.000000000 +0900 @@ -116,7 +116,7 @@ if ! test -f ${pidfile}; then e…

apacheの mod_cache の設定を復習した

http://httpd.apache.org/docs/2.2/en/mod/mod_cache.html http://httpd.apache.org/docs/2.2/ja/mod/mod_cache.html "Studying HTTP" HTTP Header Fields apacheの日本語のdocumentはversionが古くて、いくつかのdirectiveの説明が無い。他には Caching Gui…

mod_proxy - ProxyPass、BalancerMemberのパラメータのdocumentを読んだのでまとめた

http://httpd.apache.org/docs/2.2/en/mod/mod_proxy.html#proxypass http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html#proxypass timeoutとかconnectionとか。今まで真面目にみてなかったので。mod_proxyのdocumentは翻訳が追いついてないためか、…

apache 2.2.12以降で ProxyPassReverse が balancer:// でも使えるようになってた

http://archive.apache.org/dist/httpd/CHANGES_2.2 ProxyPassのパラメータ検討してて、色々見てたら表記の記述を発見。 *) mod_proxy: Complete ProxyPassReverse to handle balancer URL's. Given; BalancerMember balancer://alias http://example.com/fo…

open proxy 経由のsmtp

spamの温床になるのでポート制限をしていないopen proxyはやめましょうっていう。当たり前だけど。 apacheのmod_proxy を使う話 http proxyサーバに接続後 CONNECTメソッドでsmtpサーバへ接続 apache で実装する場合、mod_proxy、mod_proxy_connect を有効に…