Docker运行的Nginx容器关闭后仍可访问静态内容的原因咨询
为啥容器停了还能看到内容?浏览器缓存背锅!
你遇到的这个情况太常见啦——浏览器本地缓存在作祟!
当你第一次访问localhost:8080时,浏览器已经把Nginx返回的静态HTML内容下载到本地存起来了。哪怕你关掉了Nginx容器,浏览器再访问同一个地址时,会先检查本地有没有缓存的内容,发现有就直接拿出来显示,根本不会去连已经停掉的服务器。
怎么确认是缓存的问题?
- 打开浏览器的无痕/隐私模式访问
localhost:8080,这时候浏览器不会调用之前的缓存,肯定会显示无法连接的页面(比如“无法访问此网站”)。 - 或者在正常窗口里按
Cmd+Shift+R(Mac)强制刷新,这个操作会跳过本地缓存,直接向服务器发请求,同样会看到无法访问的提示。
怎么避免开发时被缓存坑?
如果是开发阶段想实时看到内容变化,可以给Nginx加个禁用缓存的配置:
- 在你的
/mycontent文件夹里创建一个名为nginx.conf的文件,内容如下:server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; # 禁用缓存 add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate"; add_header Pragma "no-cache"; add_header Expires "0"; } } - 启动容器的时候把这个配置文件挂载到Nginx的配置目录:
docker run --name my-nginx --rm -v /mycontent:/usr/share/nginx/html:ro -v /mycontent/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx
这样每次刷新页面都会从服务器拉取最新内容,不会再被缓存误导啦。
内容的提问来源于stack exchange,提问作者Picci
相关产品推荐
相关产品推荐

