最近,遇见了这个问题,明明我的/data/gis/目录是存在的,但是查看Nginx的错误日志,总是报错:“No such file or directory”。
这是配置:
server {
listen 10083;
server_name localhost;
location /gis-tile-tianditu/ {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
if ($request_method = 'OPTIONS') {
return 204;
}
alias /data/gis/;
autoindex on; # 开启目录浏览功能;
autoindex_exact_size off; #关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
autoindex_localtime on; #开启以服务器本地时区显示文件修改日期!
}
}
排查过了权限问题,检查了N遍配置,排查了是否开端口问题,都还是报404;
最后灵光一闪:是不是因为Docker部署,没把目录映射进去?
我太几把聪明了,Docker部署既然要把主机的端口和容器的端口映射;那么访问主机的目录,那么也要把主机的目录映射到相应的目录撒;
sudo docker run -d --name nginx -p 8080:80 -p 4999:4999 -p 10081:10081 -p 10083:10083 -v /data/gis:/data/gis -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/nginx/conf/conf.d/:/etc/nginx/conf.d -v /usr/local/nginx/log:/var/log/nginx -v /usr/local/nginx/html:/usr/share/nginx/html nginx:1.24.0
最后,完美解决!