カテゴリー別アーカイブ: Apache

PHP5 .htaccessによるBASIC認証のときのユーザ名取得には$_SERVER['REMOTE_USER']を使う

うーんサーバ移行ではまった。 以前のプログラムではBASIC認証が行われていないと、認証ダイアログを出してサイドアクセスを要求するつくりになっていた。サーバが変わってもこんな単純なものすぐ動くだろうと思ったが、何度やっても認証にパスしない。 if (!isset($_SERVER['PHP_AUTH_USER'])) { header(“WWW-Authenticate: Basic realm=\”INPUT ID AND PASSWORD\”"); header(“HTTP/1.0 401 Unauthorized”); exit; } 調べてみるとPHP_AUTH_USERが空白となり取得できていない。 なんで!!と調べてみたところこのサーバ移行先では諸所の事情により.htaccessによる認証をかけていた。その場合はREMOTE_USERというもので取得できるそうな。 echo $_SERVER['PHP_AUTH_USER']; echo $_SERVER['REMOTE_USER']; このコードで試してみたら、確かに下段の記述でユーザ名を取得可能なのであった!細かい違いにびっくり

カテゴリー: Apache, PHP | コメントをどうぞ

Apacheで静的コンテンツ文字化け対策

CentOSのhttpdパッケージではデフォルトでHTMLページに強制的にUTF-8のレスポンスヘッダーがつけられてしまう。動的ページばかりやっていたので気づくのが遅れた。 UTF-8以外のコンテンツを利用している人にとってははた迷惑な設定なので/etc/httpd/conf/httpd.confの以下の記述をコメントアウトしよう。 # AddDefaultCharset UTF-8 コメントアウトしたらhttpd再起動 /etc/init.d/httpd restart あとはブラウザのキャッシュが残っていると文字化け直らない場合があったので、キャッシュを消して再度アクセスする。

カテゴリー: Apache | コメントをどうぞ

favicon.icoをApacheのアクセスログに記録しない

favicon.icoとはお気に入りに登録したときの小さいアイコン画像。 ブラウザがアクセス時に探しに行くので、用意していないと404のエラーが発生する。それをエラーログに出力していると他のエラーが埋もれてしまうのでエラーログに出力しないようにしよう。 httpd.confに以下のように記述して再起… 続きを読む

カテゴリー: Apache | コメントをどうぞ

mod_proxyでoracleの管理ツールを外部公開 企画倒れ編

mod_proxyでリバースプロキシをつくり、OracleExpressEditionのapexを外から利用しようという魂胆 設定自体はmod_proxyがすでにロードされていれば、下記の内容を追記するだけ(ただしこのままだとどこからでもアクセス可能なので注意) ProxyRequests Off … 続きを読む

カテゴリー: Apache | コメントをどうぞ

mod_proxy_ajpでApache Tomcat連携

前のエントリーに続きCentOSでJava環境構築シリーズ Apache2.2になってmod_proxy_ajpを使うようになり、mod_jk(もはや非推奨)の時代より格段に楽になった。 通常CentOSのApache2.2にはモジュールがすでにインストールされた状態なので後はTomcatのインスト… 続きを読む

カテゴリー: Apache, CentOS, Java | コメントをどうぞ

ApacheバージョンやOSなどの情報を隠す

エラードキュメントの設定が適切にされていないところがほとんどの現状では必然的にApacheのバージョンやOSや付随する情報(PHPやOpenSSLのバージョン)が野ざらしになっているケースが多い。 実際問題エラーページについてデフォルトのまま放置しているようなサイトはバージョンを隠すような細かい設定ができる管理者がいないのだろうけども、簡単に対応できるので隠すのが望ましい。 httpd.confの以下の行を編集 ServerSignature Off ServerTokens ProductOnly ほとんどのバイナリではApacheとOSのバージョンまで見えてしまう設定になっている。

カテゴリー: Apache | タグ: | コメントをどうぞ

Apacheのアクセスログからロボットのログを分離

一昔前にはワームが飛び交っていたのでそれを分離する設定が重宝した。 今は新規のロボットエンジンがスパムのごとくアクセスログを埋めてくれるのでロボットはロボットで別のログにまとめる必要に迫られる。 でhttpd.confに以下のようにCustomLogの設定を入れる #主要なロボットと(迷惑な)新規ロボットをひとまとめに別ログにする SetEnvIf User-Agent “(Googlebot)|(Slurp)|(Baiduspider)|(msnbot)|(Yeti)|(psbot)|(Ask Jeeves)|(Twiceler-0.9)” robots nolog CustomLog logs/robot_log combined env=robots CustomLog logs/access_log combined env=!nolog 終わったらapache再起動するべし。 新しいロボットがきたら |(ロボットのUserAgent名) 組み合わせを増やしていけばいい。 正直いって現状ロボットアクセスが通常の2倍ぐらいありますです。うーむもっとがんばらねば!

カテゴリー: Apache | タグ: , , , | コメントをどうぞ

DNSなしでNameVirtualHostの設定を確認する

ドメイン名によってドキュメントルートを切替えるApacheのNameVirtualHost レンタルサーバーなどではよく使われている手法である。これで問題となるのがテストしたいときにDNS登録されていないとhttpd.conf一番上にある設定が使われてしまうことである。 普通はDNSに登録されているものだが、既存で動いているサイトの設定変更のテストなどをやりたい場合にわざわざDNSを書き換えることなどできないだろう。そんな時に役立つテクニックを紹介する。 答えは簡単で、windowsでもlinuxでもデフォルトではhostsファイルの設定がDNSより優先されるのでhostsファイルに書き換えればいいのだ。 #LAN内からNameVirtualHostの設定を確認する 192.168.x.x www.myserver.com 192.168.x.x www2.myserver.com 192.168.x.x www.hoge.com こんな感じでNameVirtualHostのServerNameに設定したドメインをIPと対応させればいいだろう。なおDNSはキャッシュされるので(特にWindowsはすぐに反映されない)すぐに変わらないからといって失敗と決め込んではいけない。 自分がレンタルサーバーを利用していてIPアドレスで打ち込んだときとドメイン名で打ち込んだときに違うドキュメントが表示されたらそれはNameVirtualHostの設定で共有されていると考えていい。

カテゴリー: Apache | コメントをどうぞ