Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

nginxに.htaccessを移行する。

nginxでは.htaccessを利用できないが、完全ではないもののコンバータを使うことで簡略化できる。この記事では、コンバータを効率的に行うスクリプトを紹介する。デレクトリィ構成は、debian strechを念頭に置くが、どの環境でも大筋では変わらないと思う。

コンバータ

Webサービス http://winginx.com/ja/htaccess を使う。

コンバータの限界

次のような例ではうまくいかない。

order allow,deny
allow from 192.168.0.2
allow from 192.168.0.1

192.168.0.2のみ反映される。

# nginx configuration
deny all;
allow 192.168.0.2;

Webサービスのデレクトリィ構成

コンテンツ

debianのWebサービスのデレクトリィ構成は、apache nginx共に変わりがなく次の形。virtual domainを使う場合は、document rootが複数ある形になる。userdirを使わない場合はユーザーデレクトリィはない。

デレクトリィ 摘要
/var/www/html ドキュメントルート
/home/*/public_html ユーザーデレクトリィ

.htaccess

.htaccessをapacheではコンテツ用のデレクトリィに直接配置するが、nginxでは設定ファイル内に全て記述する必要がある。

ファイル 摘要
/etc/nginx/sites-available/* defalutが規定値として設定されている。また、現在有効なサイトは sites-enabled以下にリンクされている

curlによるコンバータの利用

自分用に設定を移行するための簡単なシェルスクリプトを書いた。このシェルスクリプトは、webDir=/var/www/html以下のデレクトリィを走査し全ての.htaccessをコンバータに通す。出力された結果はniginx.confに出力されるので、内容をnginxのサイト毎の設定ファイルのserver{以下に書き足す。実際に適応する場合は、内容に十分注意してほしい。またスクリプトでのアクセスは、サーバー過負荷にならないように配慮する必要がある。

webDir=/var/www/html
config=nginx.config.`date "+%Y%m%d-%H%M%S"`

files=`find $webDir -name .htaccess`
for file in $files; do     
  data=`cat $file`
  echo "## $file" >>$config
  url=`echo $file | sed -e "s|^${webDir}\(.*\)/.htaccess$|\1|"`
  echo location $url { >>$config
  curl http://winginx.com/ja/htaccess/ajax \
    -F "htaccess=$data" -H 'X-Requested-With: XMLHttpRequest'\
    >> $config
  echo   >> $config
  echo  } >> $config
  echo   >> $config
done

nginxの操作

よく使うコマンドを簡単にまとめる。

コマンド 摘要
nginx -t 設定テスト
nginx -s reload 設定再読込
service nginx start 起動
service nginx stop 停止
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
18
Help us understand the problem. What are the problem?