Nginx+railsでrobots.txtとsitemap.xmlにアクセス出来ない場合の対処法

Nginx+railsrobots.txtとsitemap.xmlにアクセス出来ない場合の対処法.

Nginxとrailsを組み合わせて使っている場合,静的ファイルをNginxが,それ以外のリクエストをUnicornやPassengerなどのアプリケーションサーバが処理するのが普通.

でもこの場合Nginxにassets以外の静的ファイル(robots.txtやsitemap.xmlなど)の場所を明確に教えてあげないとリクエストを処理出来ない場合があるようだ.

/etc/nginx/nginx.confに以下を追加すれば対処出来る.

location /robots.txt {
     alias robots.txtがあるパス;
}

location /sitemap.xml {
     alias sitemap.xmlがあるパス;
}

alias文はシステムのローカルパスをアドレスに変換する構文./hogehogeにアクセスされた場合はこのディレクトリ,あるいはファイルをサーブするという意味.

そのうちsitemapは動的生成に切り替える予定なのでそのときはlocation /sitemap.xmlの中身は全く違うものになるはず.