ProxyErrorOverride Onと書く。これでリクエストをProxyPassしている先でなにかエラーを返した場合エラー画面が統一される。
2014年3月7日金曜日
2014年2月28日金曜日
mod_rewriteでHTTPでアクセスした時、自動的にHTTPSにrewriteする方法
RewriteCond %{HTTPS} off RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]RewriteCondは以下でも判定可能
RewriteCond %{SERVER_PORT} !^443$
2013年12月27日金曜日
mod_rewriteでクエリ文字列判定
以下で行けると思ったが
RewriteRuleはクエリ文字列(URLパラメタ)を含んでいない
らしいので別途%{QUERY_STRING}を使用して判定する必要がある。
上記の例の場合、最終的には以下のように設定すれば判定ができた。
RewriteRule ^/hoge?param=1$ /hoge/fuga? [R=permanent,L]よくよく調べてみると、
RewriteRuleはクエリ文字列(URLパラメタ)を含んでいない
らしいので別途%{QUERY_STRING}を使用して判定する必要がある。
上記の例の場合、最終的には以下のように設定すれば判定ができた。
RewriteCond %{QUERY_STRING} param=1$ RewriteRule ^/hoge$ /hoge/fuga? [R=permanent,L]
2013年11月22日金曜日
2013年9月18日水曜日
CentOS6.4にmod_wsgiをインストール
Pythonは/usr/local/bin/python2.7にインストールされていることとします。
ここを参考にインストールしてください。
また、Apacheは/home/hoge/apache/にインストールされていることとします。
ここを参考にインストールしてください。
また、Apacheは/home/hoge/apache/にインストールされていることとします。
- mod_wsgiのダウンロードとインストール
-
wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz tar xvzf mod_wsgi-3.4.tar.gz cd mod_wsgi-3.4 ./configure --with-apxs=/home/hoge/apache/bin/apxs --with-python=/usr/local/bin/python2.7 make make install
- Apacheの設定
- /home/hoge/apache/conf/httpd.confに以下を追加します。
-
LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonPath /home/hoge/app WSGIPythonEggs /home/jpge/.python-eggs
- mod_wsgiから呼び出すためのアダプターを設定
- /home/hoge/apache/conf/extra/httpd-vhosts.confに以下を追加します。
-
<virtualhost *:80> ServerName www.example.com:80 DocumentRoot /home/hoge/app WSGIDaemonProcess hogegroup user=hoge group=hoge processes=2 threads=15 WSGIScriptAlias /hoge /home/hoge/app/adapter.wsgi <Directory /home/hoge/app> Order allow,deny Allow from all </directory> </virtualhost>
2013年8月26日月曜日
mod_rewriteにてスマホ判定を行う
以下のような感じで判定できる。
RewriteCond %{HTTP_USER_AGENT} !iPad [NC] RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows.Phone) [NC] RewriteCond %{REQUEST_URI} ^/hoge/.* RewriteRule /hoge/(.*) /fuga/$1 [R=permanent,L]
2013年7月18日木曜日
mod_rewriteでIPをドメインに書き換える方法
RewriteCond %{HTTP_HOST} ^xxx\.xxx\.xxx\.xxx RewriteRule (.*) http://www.example.com$1 [R=permanent,L]ついでにwwwなしの場合、wwwをつけたいという要望があったのでメモ。
RewriteCond %{HTTP_HOST} ^example\.com RewriteRule (.*) http://www.example.com$1 [R=permanent,L]
2013年7月5日金曜日
Apacheで忘れるセキュリティ設定
サーバ情報表示を最小限にする
${APACHE_HOME}/conf/extra/httpd-default.confの「ServerTokens Full」を「ServerTokens Prod」に変更する。
同様に、「ServerSignature On」を「ServerSignature Off」に変更する。
同様に、「ServerSignature On」を「ServerSignature Off」に変更する。
TRACEメソッドを無効にする
${APACHE_HOME}/conf/extra/httpd-default.confに「TraceEnable off」を追加する。
ディレクトリ一覧を非表示にする
${APACHE_HOME}/conf/httpd.confの「Options Indexes FollowSymLinks」を「Options FollowSymLinks」に変更する。
有効な暗号化方式と強度を確認/設定する
${APACHE_HOME}/conf/extra/httpd-ssl.confの「SSLCipherSuite」の値を確認する。
例えば、「SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5」と設定してある場合、
openssl ciphers -v 'HIGH:MEDIUM:!aNULL:!MD5'で確認することが可能。
設定例は以下
SSLCipherSuite HIGH:!DH:RC4+SHA:!aNULL:!3DES:!SSLv2:!EXP:+eNULL
2013年6月3日月曜日
Apache、Tomcatによるロードバランシング
以下の前提条件で記述します。
- Apacheがインストール済みである
- Tomcatがインストール済みである
- Apacheはproxy-ajpやproxy-proxy-balancerを有効にしてインストールしてある
冗長構成の内容はApacheは一台でバックエンドの2台のTomcatに対してバランシングを行います。
Apacheの設定
バランシングの設定値は以下です。
キー | 値 | 説明 |
---|---|---|
stickysession | /home/hoge/apache | 同一情報に継続的に接続する為のセッション値を指定します。Tomcatの場合はstickysession=JSESSIONIDを指定します。注意点として大文字小文字が区別される。 |
nofailover | off | アプリケーションがフェールオーバーに対応していればoffを、対応してない場合はonを指定する。 |
timeout | 1 | ワーカーを取得するまでの最大待機時間。デフォルトでは待機しないのでエラーを返してしまう場合があるので1秒を指定。 |
loadfactor | 10 | ロードバランスする割合を指定する。 |
route | AP1には「sv1」、AP2には「sv2」 | どのサーバに割り振るか動作している指定する。TomcatのJvmRoute値と合わせる必要がある。 |
retry | 5 | ApacheとTomcatとの再接続思考の間隔。デフォルトは60秒なので短くしておく。 |
ttl | 20 | 非活動状態のコネクションと、関連するコネクションプール内のエントリの 生存時間を秒で指定します。 |
Balancerの設定
${APACHE_HOME}/conf/extra/httpd-proxy.confに以下の設定を記述します。
<location hoge=""> ProxyPass balancer://hoge/ stickysession=JSESSIONID|jsessionid nofailover=Off ttl=20 </Location> <Proxy balancer://hoge/> BalancerMember ajp://xxx.xxx.xxx.xxx:8009/ec loadfactor=10 route=sv1 retry=5 BalancerMember ajp://yyy.yyy.yyy.yyy:8009/ec loadfactor=10 route=sv2 retry=5 </Proxy>
Tomcatの設定
${TOMCAT_HOME}/conf/server.xmlのEngine要素に対してjvmRouteを設定します。
AP1の場合 <Engine name="Catalina" defaultHost="localhost" jvmRoute="sv1">
AP2の場合 <Engine name="Catalina" defaultHost="localhost" jvmRoute="sv2">
Tomcat、Apacheを再起動すれば設定は完了です。
2013年5月29日水曜日
SSL証明書(pfxファイル)をApache用に移行する方法
証明書の生成
openssl pkcs12 -in hoge.pfx -clcerts -nokeys -out hoge.crt
秘密鍵の生成
openssl pkcs12 -in hoge.pfx -nocerts -nodes -out hoge.key
中間CA証明書の生成
openssl pkcs12 -in hoge.pfx -cacerts -nokeys -out hoge-ca.crt
あとは${APACHE_HOME}/conf/extraにあるhttpd-ssl.confを上記で生成した証明書(SSLCertificateFile)と秘密鍵(SSLCertificateKeyFile)と中間CA証明書(SSLCertificateChainFile)に修正し、Apacheを再起動します。
証明書情報を確認
openssl s_client -connect ssl.example.org:443 -showcerts
openssl pkcs12 -in hoge.pfx -clcerts -nokeys -out hoge.crt
秘密鍵の生成
openssl pkcs12 -in hoge.pfx -nocerts -nodes -out hoge.key
中間CA証明書の生成
openssl pkcs12 -in hoge.pfx -cacerts -nokeys -out hoge-ca.crt
あとは${APACHE_HOME}/conf/extraにあるhttpd-ssl.confを上記で生成した証明書(SSLCertificateFile)と秘密鍵(SSLCertificateKeyFile)と中間CA証明書(SSLCertificateChainFile)に修正し、Apacheを再起動します。
証明書情報を確認
openssl s_client -connect ssl.example.org:443 -showcerts
2013年5月16日木曜日
Apacheインストール
以下のオプションでインストールします。
オプション | 値 | 説明 |
---|---|---|
--prefix | /home/hoge/apache | Apacheインストールフォルダのパスを指定 |
--enable-proxy | モジュールproxyを有効にする | |
--enable-proxy-ajp | モジュールproxy-ajpを有効にする | |
--enable-proxy-balancer | モジュールproxy-proxy-balancerを有効にする | |
--enable-rewrite | shared | モジュールrewriteを有効にする(動的モジュールとして有効にする) |
--enable-so | モジュールsoを有効にする | |
--enable-ssl | モジュールsslを有効にする | |
--with-mpm | worker | MPM(マルチプロセッシングモジュール)の種類を指定する |
コンパイルとインストール
./configure --prefix=/home/c21/apache --enable-proxy \ --enable-proxy-ajp --enable-proxy-balancer \ --enable-rewrite=shared --enable-so --enable-ssl --with-mpm=worker
make && make install
登録:
投稿 (Atom)