Reverse Proxy のtimeoutの設定のメモメモー

Apacheからのreverse proxyでバックエンドにnginxを使ってるサーバでwordpressを運営してるサイトがあるんですが、wordpress3.9.2 にアップデートしようとしたら途中で止まる。

なんやろなーと思ってたら、単にproxyがタイムアウトしてただけということで、適当に30秒くらいに設定してやって対応。

<VirtualHost *:80>
〜〜〜〜
ProxyPass / http://hogehoge.com:8000/ timeout=30
〜〜〜〜
</VirtualHost>

なんか前にも似たようなことがあったよーな気がしますが、あんまり覚えてないなー・・・。

拡張子指定で強制ダウンロード

ソースファイルを配布したい時や、データベースの集計結果をcsvファイルでダウンロードできるようにしたい時などにファイルをブラウザで開くのではなく強引にダウンロードさせる為の方法。

mod_header.soを読み込んでいる状態でhttpd.confか.htaccessに以下の記述を入れればOKです。

# txtとcsvファイルをダウンロードさせる
<IfModule mod_header.c>
  <Files "\.(txt|csv)">
    ForceType application/octet-stream
    Header set Content-Disposition attachment
  </Files>
</IfModule>

同じ拡張子でも、ダウンロードさせたいファイルとブラウザで開きたいファイルとで分けたい場合は専用のフォルダを作って<Directory>ディレクティブで指定してやれば良いかと。

ServerSignatureとは

Apacheでログ関係の設定をしていた時にふと目に付いた項目。

ServerSignature On

これあんまり気にしたことなぁ・・・何やろか?(・ω・`)
と思ってググってみました。

Apache(httpd)でホームページ(Web)関連の設定を行う。(FedoraCore4応用編)
http://www.searchman.info/fedoracore4_apply/sev1010.html

引用です。

――――-・・・・・・
Apacheのバージョン情報が出ています。
この情報を出さないようにすると、一層セキュリティは強化されます。
――――-・・・・・・

ということで、Apacheのバージョン表示の設定でした。
フム、これはOffにしといた方が無難なんよ(・ω・`)

サーバの負荷対策にApacheのexpiresモジュールでキャッシュ制御を

20110325-cache.png

画像や映像のコンテンツをメインとするサイトでの負荷対策に有効なモジュールであるexpiresモジュールの設定メモ。

画像や動画メインのサイトというと、画像掲示板とか、YouTubeとかですね。
あと、SNS系サイトも登録会員のアバター画像や写真掲載などがありますので、サイトの規模が大きいと画像専用のサーバを用意したりします。

当方のサーバではそんなコンテンツは無いのでそこまで必要ではないですが、いじる機会があったのでその時の備忘録をば。

続きを読む

Apacheモジュールで帯域制限

あるサーバで1日の転送量が70GByteを超えてますので下げてください、というお達しがプロバイダから届きました。
そのプロバイダの転送量は1日30Gbyteまでは許容範囲とのことなので、Apacheで帯域に制限をかけることに。

帯域制限をかけるモジュールとしてメジャーなのが「mod_bw」。
これを使用します。

続きを読む

mod_rewriteでwwwの有無を統一する

URLに「www」がついているのとついていないサイトについて

http://www.hoge.com/

http://hoge.com/

の2つのURLがあるとして、どちらも表示される内容は同じでもSEOの観点で見ると別サイトと取られてしまいページランクが下がってしまうことがある。

これは俗に重複URL問題と言われる(キリッ

2009年に入ったあたりからようやく対策として「rel=”canonical”」が提言されるようになってきてはいるが、最初からmod_rewriteを使って「www無しのURLからwww有りのURLへリダイレクトしちゃえばいいんじゃな〜い?」というわけでその方法をメモメモ。

ここでは、仮ドメインを「hoge.com」としmod_rewriteの記述を.htaccessに行うものとする。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^hoge.com$
RewriteRule ^/(.*)$ http://www.hoge.com/$1 [R=301,L]

やってることを説明すると、
www無しのアクセスに対して、www付きURLへ301リダイレクトをかけてるだけ。
/(スラッシュ)以降のURLもそのまま引き継げるのでGETパラメータでの処理にも対応可能。
POSTパラメータはどうなるのかはやったことないので不明。
でもおそらくPOSTは渡せないんじゃないかなと予想。

mod_rewriteを用いて動的URLを静的URLに変換する

静的URLでアクセスし、GETパラメータを渡す方法のメモ。

具体例を挙げると

http://www.hoge.com/item/(****)/

http://www.hoge.com/item.html?id=(****)

という風に変換する場合について記述する。
ここでは(****)は数字のみという前提で話を進める。
もちろん、数字以外でも応用可能だが正規表現の話になるのではここでは割愛。

方法は以下の2種類
[1]httpd.confに直接記述した後にApacheをリロード(または再起動)
[2].htaccessに記述

どちらも記載する内容は以下の通り

RewriteEngine on
RewriteRule ^item/([0-9]+)/$ item.html?id=$1 [L]

この2行でOK。

mod_rewriteでエラーが出る場合、以下の点をチェックしてみると解決できるかも。カモ肉おいしいよね。

[1]Apacheにmod_rewriteが読み込まれていない
→httpd.conf内を「mod_rewrite」で検索してみるのが最も手っ取り早い。

[2]httpd.confに直接書いてから、Apacheをリロードしていない
→とりあえずApacheをリロード。

[3]Options ディレクティブにFollowSymLinksが記載されていない
→.htaccessで処理する人にはありがちかと。というか自分がまさにこれを忘れがち。