YTsudaのブログ

1985生まれ、男。東京で働くWeb制作者

VagrantでマウントしたJavascriptファイルが文字化けする問題の対処法

環境

Vagrantで作ったVM内でNginxを走らせ、ホスト側のブラウザからリクエストしている。 アプリのソースファイルはホスト側からVMにマウントしている。

Distributor ID: Ubuntu
Description:    Ubuntu 12.04 LTS
Release:        12.04
Codename:       precise

現象

ホスト側でjsを編集しても、正しく反映されない。 UTF-8エンコード周りでよく見る菱型に?のマークに文字化けする。

原因

Nginxが静的ファイルを要求された時にsendfile()というシステムコールを使うが、 それがキャッシュを返す仕組みになっていて、mountしたディレクトリに対してうまく働かないとのこと。

VagrantでCSSの更新が反映されない場合の対処法

JS and CSS files in vagrant not properly encoded when saved outside of the VM

解決

上記、CSSの記事で紹介されていた方法を試したところ、正確に反映されるようになりました。

/etc/nginx/nginx.conf

sendfile off;

apacheでは試していないが上記ブログによれば以下の設定でいける、らしい。

httpd.conf

EnableSendfile off