Apache2.2/他設定
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
**他設定 [#u7f15710]
#contents
----
***Digest認証 [#zfdc96cc]
アカウントファイルの作成。~
htdigestコマンドを使用する。
cd /usr/local/apache2
bin/htdigest -c conf/.htdigestpw realm hoge
Adding password for hoge in realm realm.
New password:
Re-type new password:
-c : createオプション。ファイルが既に存在すると、そ...
realm : レルム。AuthNameディレクティブで指定する文字列...
hoge : 追加するユーザー名
ディレクティブの記述。
<Directory "/hoge/huga">
AuthType Digest
AuthName "realm"
AuthDigestAlgorithm MD5
AuthDigestProvider file
ここではバックエンドにローカルファイルを使用する。
MySQLなどのDBやLDAPを使用する場合はまた異なる。
AuthUserFile /usr/local/apache2/conf/.htdigestpw
.ht*はアクセス不可にしているか確認。
それ以前に外部からアクセス出来る場所に置かない。
Require valid-user
特定ユーザに絞ることも可能。
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
一部ブラウザのbug回避の為のおまじない
</Directory>
***キャッシュ設定 [#i13f0ac1]
更新頻度の低い静的コンテンツはサーバでキャッシュするもよ...
<IfModule cache_module>
CacheEnable disk /
CacheEnable mem /images
CacheDisable /acvive_contents
CacheMaxExpire 1800
CacheDefaultExpire 1800
CacheIgnoreNoLastMod Off
CacheIgnoreCacheControl Off
CacheStoreNoStore Off
CacheIgnoreHeaders Set-Cookie
CacheLastModifiedFactor 0.1
<IfModule disk_cache_module>
CacheRoot /usr/local/var/apache2/cache
CacheDirLength 2
CacheDirLevels 3
CacheMaxFileSize 102400
CacheMinFileSize 1
</IfModule>
<IfModule mem_cache_module>
MCacheSize 100
MCacheMaxObjectCount 1009
#MCacheMinObjectSize 0
デフォルトは0だが、0を設定すると怒られる不思議
MCacheMaxObjectSize 10000
MCacheRemovalAlgorithm LRU
MCacheMaxStreamingBuffer 10000
</IfModule>
</IfModule>
***Mod CIDR Lookup [#ic8c4a86]
REMOTE_ADDRがCIDR形式で用意したアドレスに一致すると~
X_CLIENT_TYPEという環境変数に値をセットしてくれる大変便利...
httpd.conf
LoadModule cidr_lookup_module modules/mod_cidr_lookup.so
CIDRFile "/usr/local/apache2/conf/hoge"
/usr/local/apache2/conf/hoge
xxx.xxx.xxx.xxx/xx
yyy.yyy.yyy.yyy/yy
このファイルネーム部分(hoge)が環境変数にセットされる文字...
と準備する。~
REMOTE_ADDRがxxx.xxx.xxx.xxx/xx内のIPアドレスだったら~
X_CLIENT_TYPEに"hoge"がセットされる。~
例えばMicrosoftのCrawlerと思われるアクセスだが~
UAにmsnbotと書かれていなかったり~
crawlなんちゃらというようにホスト名が解決できず~
IPアドレスのみだったりと~
一見普通のアクセスに見えるものがある。質の悪い(`・ω・´)~
こういうモノをCIDRで指定してまとめて蹴飛ばすことも出来る。
例えば
CIDRのファイル"/usr/local/apache2/conf/MS_Crawl"に
65.52.0.0/14
70.37.0.0/17
70.37.128.0/18
207.46.0.0/16
とリストアップしておくと、一致IPアドレスのアクセスの
X_CLIENT_TYPEに"MS_Crawl"とセットされる。
コレを利用して
SetEnvIf X_CLIENT_TYPE MS_Crawl search
<Directory "/hoge/huga">
Order Deny,Allow
Deny from env=search
</Directory>
など、アクセス避けをしてみたり( ´ω`)
***FastCGI(mod_fcgid)でPHP [#l4629d68]
Apache製の方。~
環境変数を盛り込んだPHPのラッパを作成。
#!/bin/sh
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php
/usr/local/bin/php-wrapper として保存。実行権つける。
公式の意訳。PHPの環境変数について。
>PHPの考慮事項
>PHPのFastCGIプロセスは規定値で500のリクエストを処理した...
>既にPHPアプリケーションと接続しているときに終了するとエ...
>クライアントには500ステータスを返します。
>このPHPの動作は、PHP_FCGI_MAX_REQUESTSを0に設定すること...
>PHPアプリケーションがメモリリークを起こしている場合など...
>PHP_FCGI_MAX_REQUESTSは、この問題(500エラー)の頻度を減ら...
>規定値よりもはるかに高い値に設定することができます。
>またFcgidMaxRequestsPerProcessディレクティブをPHP_FCGI_M...
タイミングが悪いと500エラーが出るけど、メモリリークとか考...
>PHP_FCGI_CHILDRENは子プロセス管理のための変数ですが
>mod_fcgidではmod_fcgidが要求して生成するプロセスのみにす...
>PHPが作る他の子プロセスは効果的に使用されません。
>(子プロセスが正しく終了しない事もあります。※PHPのバグっ...
>規定値でPHP_FCGI_CHILDRENは0で、PHPの子プロセスの管理が...
>子プロセス管理を行わないとFastCGIプロセス間でAPCなどのコ...
>従ってキャッシュの有効性がmod_fcgidでは制限されています。
APCなどはPHP自身がフォークした子プロセスに対し有効だが~
mod_fcgidが生成したプロセス間では共有出来ないので、APCな...
PHPのマニュアルにはlighttpdでの説明があるが、そちらではPH...
http://php.net/manual/ja/install.unix.lighttpd-14.php
~
ディレクティブ。PHP以外も勿論使えるが、ここではPHPだけ設...
FcgidIdleScanInterval 60 #60秒おきにプロセス状態...
FcgidIdleTimeout 60 #60秒でタイムアウト
FcgidProcessLifeTime 600 #600秒経ったアイドルプロ...
FcgidMinProcessesPerClass 0 #Classの意味がよくわから...
FcgidMaxProcessesPerClass 1 #同上。最大でもこの数ま...
#上2つの組み合わせだと...
FcgidMaxRequestsPerProcess 4000 #4000リクエスト処理した...
FcgidWrapper /usr/local/bin/php-wrapper .php #ラッパの指定
AddHandler fcgid-script .php #mod_fcgidで持っているハ...
これで mod_fcgid がラッパを介してPHPプロセスを起動する。
***FastCGI(mod_fastcgi)でPHP [#b82fd538]
ORACLEの以下のエントリを基に。~
https://blogs.oracle.com/opal/entry/php_fpm_fastcgi_proce...
■プロセス管理をmod_fastcgiで行う
FastCGIServer /usr/local/bin/php
ScriptAlias /php-fcgi /usr/local/bin/php #Actionで使うた...
AddHandler fastcgi-php .php #ここでは.php ...
Action fastcgi-php /php-fcgi #fastcgi-phpハ...
最近のPHPはCGIモードの区別がないが、php-cgiなどのバイナ...
■PHP-FPMを使う
Apache2.2系でPHP-FPMを利用するとなると、コレしか方法がな...
PHP-FPMはソケット /var/run/php-fpm/www.sock で待ち受ける...
ScriptAlias /php-fcgi /php-fcgi #第二引数は実際に存...
AddHandler fastcgi-php .php virtual #第三引数に virtual ...
Action fastcgi-php /php-fcgi #/php-fcgiを起動
FastCGIExternalServer /php-fcgi -socket /var/run/php-fpm...
FastCgiWrapper Off #デフォルトはOff
例えばphp-fpmのステータスを表示するには
<Location /fpm-status> #PHP-FPMのpm.status_pathで指...
SetHandler fastcgi-php #上で定義したハンドラを指定
Order Allow,Deny
Allow from env=local
</Location>
終了行:
**他設定 [#u7f15710]
#contents
----
***Digest認証 [#zfdc96cc]
アカウントファイルの作成。~
htdigestコマンドを使用する。
cd /usr/local/apache2
bin/htdigest -c conf/.htdigestpw realm hoge
Adding password for hoge in realm realm.
New password:
Re-type new password:
-c : createオプション。ファイルが既に存在すると、そ...
realm : レルム。AuthNameディレクティブで指定する文字列...
hoge : 追加するユーザー名
ディレクティブの記述。
<Directory "/hoge/huga">
AuthType Digest
AuthName "realm"
AuthDigestAlgorithm MD5
AuthDigestProvider file
ここではバックエンドにローカルファイルを使用する。
MySQLなどのDBやLDAPを使用する場合はまた異なる。
AuthUserFile /usr/local/apache2/conf/.htdigestpw
.ht*はアクセス不可にしているか確認。
それ以前に外部からアクセス出来る場所に置かない。
Require valid-user
特定ユーザに絞ることも可能。
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
一部ブラウザのbug回避の為のおまじない
</Directory>
***キャッシュ設定 [#i13f0ac1]
更新頻度の低い静的コンテンツはサーバでキャッシュするもよ...
<IfModule cache_module>
CacheEnable disk /
CacheEnable mem /images
CacheDisable /acvive_contents
CacheMaxExpire 1800
CacheDefaultExpire 1800
CacheIgnoreNoLastMod Off
CacheIgnoreCacheControl Off
CacheStoreNoStore Off
CacheIgnoreHeaders Set-Cookie
CacheLastModifiedFactor 0.1
<IfModule disk_cache_module>
CacheRoot /usr/local/var/apache2/cache
CacheDirLength 2
CacheDirLevels 3
CacheMaxFileSize 102400
CacheMinFileSize 1
</IfModule>
<IfModule mem_cache_module>
MCacheSize 100
MCacheMaxObjectCount 1009
#MCacheMinObjectSize 0
デフォルトは0だが、0を設定すると怒られる不思議
MCacheMaxObjectSize 10000
MCacheRemovalAlgorithm LRU
MCacheMaxStreamingBuffer 10000
</IfModule>
</IfModule>
***Mod CIDR Lookup [#ic8c4a86]
REMOTE_ADDRがCIDR形式で用意したアドレスに一致すると~
X_CLIENT_TYPEという環境変数に値をセットしてくれる大変便利...
httpd.conf
LoadModule cidr_lookup_module modules/mod_cidr_lookup.so
CIDRFile "/usr/local/apache2/conf/hoge"
/usr/local/apache2/conf/hoge
xxx.xxx.xxx.xxx/xx
yyy.yyy.yyy.yyy/yy
このファイルネーム部分(hoge)が環境変数にセットされる文字...
と準備する。~
REMOTE_ADDRがxxx.xxx.xxx.xxx/xx内のIPアドレスだったら~
X_CLIENT_TYPEに"hoge"がセットされる。~
例えばMicrosoftのCrawlerと思われるアクセスだが~
UAにmsnbotと書かれていなかったり~
crawlなんちゃらというようにホスト名が解決できず~
IPアドレスのみだったりと~
一見普通のアクセスに見えるものがある。質の悪い(`・ω・´)~
こういうモノをCIDRで指定してまとめて蹴飛ばすことも出来る。
例えば
CIDRのファイル"/usr/local/apache2/conf/MS_Crawl"に
65.52.0.0/14
70.37.0.0/17
70.37.128.0/18
207.46.0.0/16
とリストアップしておくと、一致IPアドレスのアクセスの
X_CLIENT_TYPEに"MS_Crawl"とセットされる。
コレを利用して
SetEnvIf X_CLIENT_TYPE MS_Crawl search
<Directory "/hoge/huga">
Order Deny,Allow
Deny from env=search
</Directory>
など、アクセス避けをしてみたり( ´ω`)
***FastCGI(mod_fcgid)でPHP [#l4629d68]
Apache製の方。~
環境変数を盛り込んだPHPのラッパを作成。
#!/bin/sh
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/bin/php
/usr/local/bin/php-wrapper として保存。実行権つける。
公式の意訳。PHPの環境変数について。
>PHPの考慮事項
>PHPのFastCGIプロセスは規定値で500のリクエストを処理した...
>既にPHPアプリケーションと接続しているときに終了するとエ...
>クライアントには500ステータスを返します。
>このPHPの動作は、PHP_FCGI_MAX_REQUESTSを0に設定すること...
>PHPアプリケーションがメモリリークを起こしている場合など...
>PHP_FCGI_MAX_REQUESTSは、この問題(500エラー)の頻度を減ら...
>規定値よりもはるかに高い値に設定することができます。
>またFcgidMaxRequestsPerProcessディレクティブをPHP_FCGI_M...
タイミングが悪いと500エラーが出るけど、メモリリークとか考...
>PHP_FCGI_CHILDRENは子プロセス管理のための変数ですが
>mod_fcgidではmod_fcgidが要求して生成するプロセスのみにす...
>PHPが作る他の子プロセスは効果的に使用されません。
>(子プロセスが正しく終了しない事もあります。※PHPのバグっ...
>規定値でPHP_FCGI_CHILDRENは0で、PHPの子プロセスの管理が...
>子プロセス管理を行わないとFastCGIプロセス間でAPCなどのコ...
>従ってキャッシュの有効性がmod_fcgidでは制限されています。
APCなどはPHP自身がフォークした子プロセスに対し有効だが~
mod_fcgidが生成したプロセス間では共有出来ないので、APCな...
PHPのマニュアルにはlighttpdでの説明があるが、そちらではPH...
http://php.net/manual/ja/install.unix.lighttpd-14.php
~
ディレクティブ。PHP以外も勿論使えるが、ここではPHPだけ設...
FcgidIdleScanInterval 60 #60秒おきにプロセス状態...
FcgidIdleTimeout 60 #60秒でタイムアウト
FcgidProcessLifeTime 600 #600秒経ったアイドルプロ...
FcgidMinProcessesPerClass 0 #Classの意味がよくわから...
FcgidMaxProcessesPerClass 1 #同上。最大でもこの数ま...
#上2つの組み合わせだと...
FcgidMaxRequestsPerProcess 4000 #4000リクエスト処理した...
FcgidWrapper /usr/local/bin/php-wrapper .php #ラッパの指定
AddHandler fcgid-script .php #mod_fcgidで持っているハ...
これで mod_fcgid がラッパを介してPHPプロセスを起動する。
***FastCGI(mod_fastcgi)でPHP [#b82fd538]
ORACLEの以下のエントリを基に。~
https://blogs.oracle.com/opal/entry/php_fpm_fastcgi_proce...
■プロセス管理をmod_fastcgiで行う
FastCGIServer /usr/local/bin/php
ScriptAlias /php-fcgi /usr/local/bin/php #Actionで使うた...
AddHandler fastcgi-php .php #ここでは.php ...
Action fastcgi-php /php-fcgi #fastcgi-phpハ...
最近のPHPはCGIモードの区別がないが、php-cgiなどのバイナ...
■PHP-FPMを使う
Apache2.2系でPHP-FPMを利用するとなると、コレしか方法がな...
PHP-FPMはソケット /var/run/php-fpm/www.sock で待ち受ける...
ScriptAlias /php-fcgi /php-fcgi #第二引数は実際に存...
AddHandler fastcgi-php .php virtual #第三引数に virtual ...
Action fastcgi-php /php-fcgi #/php-fcgiを起動
FastCGIExternalServer /php-fcgi -socket /var/run/php-fpm...
FastCgiWrapper Off #デフォルトはOff
例えばphp-fpmのステータスを表示するには
<Location /fpm-status> #PHP-FPMのpm.status_pathで指...
SetHandler fastcgi-php #上で定義したハンドラを指定
Order Allow,Deny
Allow from env=local
</Location>
ページ名: