質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

1276閲覧

vagrant + virtualbox + ubuntu + docker + nginx でhtmlファイルの更新が反映されない

hibohiboo

総合スコア7

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/09/22 16:34

編集2017/09/23 01:01

###前提・実現したいこと

docker+nginxでindex.htmlファイルを更新したらすぐに反映されるようにしたいです。

###発生している問題

dockerでnginxを立ち上げたが、index.htmlを更新しても、ブラウザでアクセスしたときに更新が反映されない。

###該当のソースコード

app/docker/docker-compose.yml

yml

1version: '3' 2services: 3 nginx: 4 image: nginx 5 ports: 6 - 8080:80 7 volumes: 8 - ../public/:/usr/share/nginx/html/

app/public/index.html

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8" /> 5 <title>test</title> 6</head> 7<body> 8 <h1>test</h1> 9</body> 10</html>

###試したこと

以下のように変更して保存しても、変更が反映されない。

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8" /> 5 <title>test</title> 6</head> 7<body> 8 <h1>test2!</h1> 9</body> 10</html>
  • chromeでF12→更新を右クリックして「キャッシュの消去とハード再読込」するとステータスコード304からステータスコード200になるが更新されない。
  • vm上からcurl http://localhost:8080しても更新されていないソースが見える。
  • docker stop $(docker ps -q) docker rm $(docker ps -aq) docker volume ls -q -f dangling=true | xargs docker volume rm を行ったのち、docker-compose upで立ち上げ直すが解決しない。
  • vagrant reloadでvmを再起動しても解決しない。
  • docker-compose run nginx /bin/bashでログインし、cat index.htmlとしても解決しない。
  • docker-compose run nginx /bin/bashでログインし、touch index.htmlで更新日時を更新しても解決しない。
  • index.html → _index.htmlとリネームすると、404となる。ファイルの追加・削除は正常な模様。
  • _index.htmlにアクセスすると、変更後のソースが読み込まれる。
  • _index.html → index.htmlにリネームすると、変更後のソースが読み込まれて解決する。

一応の解決手順は見つかりましたが、リネーム → アクセス → リネームと作業が多いです。
回避方法、また原因など教えていただけたら幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)

  • chrome 61.0.3163.91(Official Build) (64 ビット)
  • windows10
  • virtualbox 5.1.26
  • vagrant 1.9.7
  • bento/ubuntu-16.04
  • Docker version 17.06.2-ce, build cec0b72
  • docker-compose version 1.16.1, build 6d1ac21
追記・サーバ設定

修正依頼ありがとうございます。nginxの設定ファイルは以下になります。
配布コンテナから特に変更はしていません。

/etc/nginx/nginx.conf

config

1 2user nginx; 3worker_processes 1; 4 5error_log /var/log/nginx/error.log warn; 6pid /var/run/nginx.pid; 7 8 9events { 10 worker_connections 1024; 11} 12 13 14http { 15 include /etc/nginx/mime.types; 16 default_type application/octet-stream; 17 18 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 19 '$status $body_bytes_sent "$http_referer" ' 20 '"$http_user_agent" "$http_x_forwarded_for"'; 21 22 access_log /var/log/nginx/access.log main; 23 24 sendfile on; 25 #tcp_nopush on; 26 27 keepalive_timeout 65; 28 29 #gzip on; 30 31 include /etc/nginx/conf.d/*.conf; 32} 33

/etc/nginx/conf.d/default.conf

config

1server { 2 listen 80; 3 server_name localhost; 4 5 #charset koi8-r; 6 #access_log /var/log/nginx/host.access.log main; 7 8 location / { 9 root /usr/share/nginx/html; 10 index index.html index.htm; 11 } 12 13 #error_page 404 /404.html; 14 15 # redirect server error pages to the static page /50x.html 16 # 17 error_page 500 502 503 504 /50x.html; 18 location = /50x.html { 19 root /usr/share/nginx/html; 20 } 21 22 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 23 # 24 #location ~ \.php$ { 25 # proxy_pass http://127.0.0.1; 26 #} 27 28 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 29 # 30 #location ~ \.php$ { 31 # root html; 32 # fastcgi_pass 127.0.0.1:9000; 33 # fastcgi_index index.php; 34 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 35 # include fastcgi_params; 36 #} 37 38 # deny access to .htaccess files, if Apache's document root 39 # concurs with nginx's one 40 # 41 #location ~ /\.ht { 42 # deny all; 43 #} 44} 45

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xenbeat

2017/09/22 18:17

nginxのconfigを追記してもらっていいですか?
guest

回答2

0

ベストアンサー

sendfile on;

sendfile off;

にしてみてください。

投稿2017/09/23 04:15

xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

そもそもページをキャッシュさせないようにヘッダに書いてみてはいかがでしょう?

<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache">

投稿2017/09/23 01:46

n884

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hibohiboo

2017/09/23 15:42

ブラウザに304させないための制御はヘッダへの記述が有効ですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問