我正在尝试根据此项目设置石墨与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很新...想知道配置中是否存在我误解的内容。
提前致谢。
答案 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