Powered By Blogger
ラベル Apache の投稿を表示しています。 すべての投稿を表示
ラベル Apache の投稿を表示しています。 すべての投稿を表示

2014年3月7日金曜日

プロキシされたコンテンツのエラーページを上書きする

ProxyErrorOverride On
と書く。これでリクエストをProxyPassしている先でなにかエラーを返した場合エラー画面が統一される。

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 ^/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日金曜日

FTPアクセス制限

いまさらFTPサーバを構築させられたので、念のためメモ。

以下のような内容でXXX.XXX.XXX.XXXの部分に許可対象のIPを指定し、「.ftpaccess」というファイル名でアクセス制限対象のディレクトリに配置します。
<Limit ALL>
Order Allow,Deny
Allow from XXX.XXX.XXX.XXX
Deny from all
</Limit>

2013年9月18日水曜日

CentOS6.4にmod_wsgiをインストール

Pythonは/usr/local/bin/python2.7にインストールされていることとします。

ここを参考にインストールしてください。 

また、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」に変更する。

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によるロードバランシング

以下の前提条件で記述します。
  1. Apacheがインストール済みである
  2. Tomcatがインストール済みである
  3. Apacheはproxy-ajpやproxy-proxy-balancerを有効にしてインストールしてある
冗長構成の内容はApacheは一台でバックエンドの2台のTomcatに対してバランシングを行います。

Apacheの設定

バランシングの設定値は以下です。

キー説明
stickysession/home/hoge/apache同一情報に継続的に接続する為のセッション値を指定します。Tomcatの場合はstickysession=JSESSIONIDを指定します。注意点として大文字小文字が区別される。
nofailoveroffアプリケーションがフェールオーバーに対応していればoffを、対応してない場合はonを指定する。
timeout1ワーカーを取得するまでの最大待機時間。デフォルトでは待機しないのでエラーを返してしまう場合があるので1秒を指定。
loadfactor10ロードバランスする割合を指定する。
routeAP1には「sv1」、AP2には「sv2」どのサーバに割り振るか動作している指定する。TomcatのJvmRoute値と合わせる必要がある。
retry5ApacheとTomcatとの再接続思考の間隔。デフォルトは60秒なので短くしておく。
ttl20非活動状態のコネクションと、関連するコネクションプール内のエントリの 生存時間を秒で指定します。


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

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