タグのついた記事 apache

同ネットワークの他PCから自PCへのhttpdアクセス時に応答速度が落ちていたが解決

今日になって自PCで開発しているプログラム(php)に同ネットワーク内の他PCからアクセスしてみた所、何故か応答に5秒~10秒程度かかるようになっていた。

何か不味いロジックを入れてしまったのか、それともDNS解決の問題かと当たりを付けてみるものの問題は無く、実際には自PCで最近入れたVMware Workstation 6の仮想NICが原因だった。これをコントロールパネルから無効にすると応答速度は元に戻った。

なんかこの仮想NICは今回の他にもいろいろ問題を起こしていた気がする。でもVirtualBoxはヒストリ管理がなぁ・・・ MS Virtual PCはパフォーマンスが論外だし。

コメントを書く

phpでfilesize()でファイルサイズが取得出来ない特定の拡張子のファイルがあって、何が原因だろうと思ってたらgzipだった

apacheのmod_deflateでgzipで配信されてる状態のファイルはfilesize()してもファイルサイズが取得出来ないっぽい。

若干はまった。

コメントを書く

特定ディレクトリにあるファイルをすべてapplication/octet-streamにするには

HTTP header(ヘッダ)のContent-Typeをapplication/octet-streamに指定すると、明示的にブラウザにダウンロードをさせることが出来る。つまり、pdf等デフォルトではプラグインで再生されるようになっているものでも、ダウンロード画面を開かせることが出来る。

ファイルのリンク先をphpにして、その中でheader()関数とreadfile()関数を使うという方法もある(php ダウンロードさせる で検索すればサンプルは腐るほどある)けど、やはりリンクはファイルへの直リンが望ましいのではないか(まあ、DL解析には向かないかもしれないけど)。

そういうときに、httpd.confを弄れるのなら方法はある(もしかしたら.htaccessでもいけるかも?)。
特定のディレクトリ(Directory、正規表現ならDirectoryMatch)/サイトパス(Location、正規表現ならLocationMatch)の特定の拡張子のファイルのみをAddTypeでoctet-streamに指定すれば良いのだ。

<LocationMatch “^/(.*)/upload_directory”>
<IfModule mime_module>
AddType application/octet-stream zip lzh rar 7z
</IfModule>
</LocationMatch>

これで、DocumentRootから1階層潜った先にあるupload_directoryに格納されたzip、lzh、rar、7zは全て明示的にダウンロードされることになる。

「これらのファイルはデフォルトでダウンロードじゃないか」と思う人も多いと思うが、どうやらIEではoctet-streamに指定されていないzipをダウンロードすると中身の拡張子が消えるという環境があるようだから、まあ指定しておくに損はない(この話についてはきちんとした検証が済んでいないので、参考程度に)。

ちなみに、例えば画像をoctet-streamに指定しても、imgタグで貼ることは出来るようだ。安心。

コメントを書く

Apacheでphp.txtやcgi.txtとしているにも関わらず普通に実行出来てしまう場合

AddHandler default-handler .txt

を追加する。

コメントを書く

ApacheのRedirectMatchを使って「トップディレクトリへのアクセスのみ」を転送する場合

RedirectMatch “^/$” “http://hoge.com/”

こうすることによってトップディレクトリへのアクセスのみをhoge.comに自動転送させることが出来る。

コメントを書く

hostsにしてもproxypassにしてもaliasにしても、特殊な要件から先に記述する

つまり、サブドメインやサブディレクトリへのアクセス振り分けを先に記述する。

コメントを書く

phpのgetenv(”REMOTE_HOST”)で値が取得出来ない場合は

Apacheのhttpd.confでHostNameLookupsをonにする。もしなければ追加する。
ただしこれを行うとApacheはロギング時に毎回DNSLookupを行うようになるため、パフォーマンスに影響が出るらしい。

コメントを書く

XAMPPをphp5設定で動かしているときのphp.iniは/xampp/apache/bin/php.ini

なぜかもう二つ/xampp/php/フォルダにiniがあるけど、どうやらそれはphp4の時に使ったりするらしい。

しかしなんで3つもあるんだ?よくわからんな…

コメントを書く

mod_proxyによるリバースプロキシ環境でPukiWikiをうまく動かすには

http://httpd.apache.org/docs/2.2/ja/vhosts/examples.html#proxy

http://www.palmtb.net/index.php?%A5%EA%A5%D0%A1%BC%A5%B9%A5%D7%A5%ED%A5%AD%A5%B7%C0%DF%C4%EA%BC%EA%BD%E7

リバースプロキシサーバはDNSの参照はさせるが、Webサーバ用のAレコードのFQDNだけは、hostsファイルでWebサーバの新しいプライベートIPアドレスに向けるようにする。 WebサーバではPukiWikiを使用しているため、リンクはクライアントからアクセスしたアドレスになってしまう。リバースプロキシサーバにWebサーバのFQDNをhostsで記述するのはこのため。

この方法をとった。

コメントを書く

CentOSでApacheのhttpd.confの構文をチェックしたいときは

apachectl configtest

でチェック。石橋を叩いて渡る。

コメントを書く

古い投稿 »