基于此项目,我正在尝试在docker中设置石墨以与grafana一起使用:https://github.com/kamon-io/docker-grafana-graphite
并且当我运行dockerfile时,nginx出现403禁止错误。
我对nginx的配置与项目的配置几乎相同。我在服务器上运行dockerfile并在Windows计算机上对其进行测试。因此配置不完全相同...例如,我有:
server {
listen 80 default_server;
server_name _;
location / {
root /src/grafana/dist;
index index.html;
}
location /graphite/ {
proxy_pass http:/myserver:8000/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Methods "GET, OPTIONS";
add_header Access-Control-Allow-Headers "origin, authorization, accept";
}
但是我仍然不断被禁止使用403。检查错误日志中的nginx说:
directory index of "/src/grafana/dist/" is forbidden
停止并再次运行它说:
directory index of "/src/grafana/dist/" is forbidden
我对nginx还是很陌生……想知道配置中是否存在我误解的东西。
谢谢。
这是因为您正在击中第一个位置块而找不到索引文件。
对'/'的请求将在'/ src / grafana / dist'中寻找'index.html'。
确认:1.'index.html'存在。2.您拥有正确的权限。nginx具有对整个目录树(以“ index.html”)的访问权限。也就是说,它必须能够读取目录“ src”,“ src / grafana”和“ src / grafana / dist”以及“ index.html”本身。一个hacky快速修复程序可以做到这一点,那就是'sudo chmod -R 755 / src',但是我不建议这样做。
问题关乎数量;而不是将卷设置为html目录,而是将其设置为nginx目录。例如:代替
-v / home / USER / docker-volums / nginx-sample1 / usr / share / nginx / html:/ usr / share / nginx / html
执行以下操作:
-v / home / USER / docker-volums / nginx-sample1 / usr / share / nginx:/ usr / share / nginx
问题将解决!
用于解决问题:
remove previous existing container and create container by following command:
[docker run -d --name nginx-sample1 -v / home / USER / docker-volums / nginx-sample1 / usr / share / nginx:/ usr / share / nginx -p 2080:80 nginx:latest