web-dev-qa-db-ja.com

nginx403禁止エラー

このプロジェクトに基づいて、Dockerでgrafanaを操作するようにグラファイトを設定しようとしています: https://github.com/kamon-io/docker-grafana-graphite

dockerfileを実行すると、nginxで403Forbiddenエラーが発生します。

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に非常に慣れていません...私が誤解している構成に何かがあるかどうか疑問に思っていました。

前もって感謝します。

7
tyrell_c

これは、最初のロケーションブロックにヒットしていて、インデックスファイルが見つからないためです。

18
Xavier Lucas

'/'へのリクエストは、 '/ src/grafana/dist'で 'index.html'を検索します。

次のことを確認します。1。「index.html」が存在します。 2.適切な権限があります。 nginxには、「index.html」に至るまでのディレクトリツリー全体への読み取りアクセス権があります。つまり、ディレクトリ「src」、「src/grafana」、「src/grafana/dist」、および「index.html」自体を読み取ることができる必要があります。これを実現するためのハッキーなクイックフィックスは、「Sudo chmod -R 755/src」を実行することですが、お勧めしません。

3
stefano

問題はボリュームに関するものです。ボリュームを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に自動的に適用されます。次のコマンドでangularプロジェクトを実行します:

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

0
Jafar Amini