nginx 403禁止错误

时间:2014-12-04 20:59:44

标签: nginx docker graphite grafana

我正在尝试根据此项目设置石墨与docker中的grafana一起使用:https://github.com/kamon-io/docker-grafana-graphite

当我运行我的dockerfile时,我得到了nginx的403 Forbidden错误。

我对nginx的配置几乎与项目的配置相同。我在服务器上运行dockerfiles并在我的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很新...想知道配置中是否存在我误解的内容。

提前致谢。

3 个答案:

答案 0 :(得分:13)

那是因为你正在点击第一个位置块并且找不到索引文件。

答案 1 :(得分:3)

对' /'的请求将寻找' index.html'在' / src / grafana / dist'。

确认: 1.' index.html'存在。 2.您拥有正确的权限。 nginx具有对整个目录树的读访问权,该目录树通向' index.html'。也就是说,它必须能够读取目录' src' src / grafana'和' src / grafana / dist'以及' index.html'本身。 实现这一目标的一个hacky快速修复方法是做sudo chmod -R 755 / src'但是我不推荐它。

答案 2 :(得分:0)

问题在于数量;而不是将卷设置为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

现在在angular项目中,您可以通过观察更改来构建项目,实时更改将自动应用于nginx。通过以下命令运行角度项目:

ng build --outputPath = / home / USER / docker-volums / nginx-sample1 / usr / share / nginx / html / --watch