最近在docker部署Thinkphp管理后台,部署完成后发现根目录下所有静态资源无法访问。翻了很多php 配置和nginx 配置,后来发现是因为使用Docker 容器问题。
问题描述
Docker启动nginx容器中部署项目后无法访问根目录下文件
原因分析:
这里直接跳到了控制层,因此很大可能是因为对应的路径不存在静态资源,于是去查看配置文件映射的静态资源路径。
因为是使用的docker安装的nginx,因此在挂载的卷中所写的root资源路径应该是对应的nginx容器中的linux下的路径,所以当然找不到对应的文件。
所以正确的路径应该是找linux容器中存放静态资源的路径。
因为nginx容器中存放静态资源的文件是位于/usr/share/nginx/html下,所以此时应该将静态资源对应的配置文件中的路径应该写容器中linux中的路径/usr/share/nginx/html,此时可以正确的访问静态资源路径。
location /static/
{
root /usr/share/nginx/html/tpadmin/public/;
//nginx 容器中的对应的位置是 /usr/share/nginx/html/tpadmin/public/static
}
location /upload/
{
root /usr/share/nginx/html/tpadmin/public/;
//nginx 容器中的对应的位置是 /usr/share/nginx/html/tpadmin/public/upload
}