ブラウザ(User-Agent)を特定して通信を許可/拒否する


携帯用に作成したサイト(ページ)については、携帯電話からのみアクセスを許可したいケースがあると思われます。
各携帯キャリアが公開しているIPアドレスを指定するのが一つの方法です。もう一つイレギュラーな方法としてはUser-Agentを指定してアクセスを許可させる方法が考えられます。ただしUser-Agentはいくらでも偽装可能なのでセキュリティを気にする場合ははっきり言って使えない方法なのでご注意ください。


httpd.confには以下のような例で記述を行えばOKです。

(例)Docomoからのみアクセスさせたい場合

SetEnvIfNoCase User-Agent ^Docomo* AllowUserAgent
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny all
    Allow env=AllowUserAgent
</Directory>

リモートマシンのフォルダにログを出力する

WindowsサーバーにインストールしたApacheのログを別のマシン(以下ログ用サーバー)に保管するための手順をメモしておきます。
Windowsの共有フォルダを使い実現しています。

■パスワードの統一
Windowsの共有フォルダをにログを出力することになるので、ログ用サーバーとApacheのインストールされたサーバー(以下Webサーバー)の
・ユーザーAdministratorのパスワード
or
・グループAdministratorsに所属するのユーザー名とパスワード

を一緒にしておく必要があります。


■ログ用出力フォルダの設定
1. ログ出力用のフォルダの作成
ログ用サーバーの適当な場所にフォルダを作成します。

2. 作成したフォルダを共有できるようにします。

Apacheにおける設定
1. サービスにログオンするユーザーの変更
Windowsのサービス画面で[Apache Tomcat]を選択し、[ログオン]タブで
・[アカウント]のラジオボタンにチェック
・[アカウント]の入力欄にログ用サーバーとAPサーバーで同一の名称になるように設定したユーザー名を入力します。
(例) .\Administrator
・[パスワード]と[パスワードの確認入力]の入力欄にログ出力用サーバーとWebサーバーで同一の名称になるように設定したユーザーのパスワードを入力します。


2. httpd.confの編集
httpd.confを編集します。
・ログ用サーバーに作成したフォルダにログが出力されるような設定を追記します。

(編集例)

CustomLog "| 'C:/Program Files/Apache Group/Apache2/bin/rotatelogs.exe' '//192.168.0.225/apachelogs/access.log' 86400" common

ErrorLog "| 'C:/Program Files/Apache Group/Apache2/bin/rotatelogs.exe' '//192.168.0.225/apachelogs/error.log' 86400"

リポジトリの内容と完全に同期させる

マージするファイルの対象が多すぎて、面倒くさいときによくやります。
やっていることはeclipseの右クリックにある「Latest from Repository」と同じです。

実行方法は以下のとおりです。

svn revert -R .
svn update .

ログを出力させない方法

Tomcatのログ(catalinal.2008-03-10.log等)を出力させない方法についてのメモです。
logging.propertiesの***.levelをOFFにすればとりあえず出力されないようになります。

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.FileHandler.level = OFF
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.

2localhost.org.apache.juli.FileHandler.level = OFF
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.

3manager.org.apache.juli.FileHandler.level = OFF
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.

4admin.org.apache.juli.FileHandler.level = OFF
4admin.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4admin.org.apache.juli.FileHandler.prefix = admin.

5host-manager.org.apache.juli.FileHandler.level = OFF
5host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5host-manager.org.apache.juli.FileHandler.prefix = host-manager.

java.util.logging.ConsoleHandler.level = OFF
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Memory Notification: Library Cache Object loaded into SGA


Oracleのアラートログ(alert_{ORACLE_SID}.log)に下記のようなエラーが大量にはきだされるときがあります。

Memory Notification: Library Cache Object loaded into SGA
Heap size 7798K exceeds notification threshold (2048K)

これはデフォルトの状態でSGAの使用量が2GB(2048K)を超えた際に必ず出てくるログのようです。

常に2GB以上、SGAの領域を使用する場合、ログを肥大化させ、より重要なログを埋もれさせるだけなので出ないようにするのがベターです。

方法としては、Oracleの隠しパラメータ_kgl_large_heap_warning_thresholdにログを出すしきい値を設定することで回避可能です。


SYSTEMユーザーで下記のコマンドを実行すればOKです。

ALTER SYSTEM SET _kgl_large_heap_warning_threshold=4096K SCOPE=both;