2017-10-14 11 views
1

私はLinux Mint 18.2とドッカーを使用しています。 現在、私はbitnamiの2つのドッキング・コンテナを持っています.1つはnginx、もう1つはphp-fpmです。 は、ここに私のnginxのための設定をドッキングウィンドウは、構成です:ローカルウェブサイトにアクセスする際に許可が拒否されたのはなぜですか?

version: '2' 

services: 
    nginx: 
    image: 'bitnami/nginx:latest' 
    group_add: 
     - www-data 
    restart: always 
    labels: 
     kompose.service.type: nodeport 
    ports: 
     - '80:8080' 
     - '443:8443' 
    volumes: 
     - 'nginx_data:/bitnami' 
     - ~/Documents/nginx/nginx.conf:/bitnami/nginx/conf/nginx.conf:ro 
     - ~/Documents/nginx/my_vhost.conf:/bitnami/nginx/conf/vhosts/my_vhost.conf:ro 
     - /usr/share/nginx/html:/app 

volumes: 
    nginx_data: 
    driver: local 

、ここでは、PHP-FPMのための私のドッキングウィンドウ-compose.ymlです:

version: '2' 

services: 
    php: 
    tty: true # Enables debugging capabilities when attached to this container. 
    image: 'bitnami/php-fpm:latest' 
    labels: 
     kompose.service.type: nodeport 
    ports: 
     - 9000:9000 
    volumes: 
     - /usr/share/nginx/html:/app 
     - ~/Documents/nginx/nginx.conf:/bitnami/nginx/conf/nginx.conf:ro 
     - ~/Documents/nginx/my_vhost.conf:/bitnami/nginx/conf/vhosts/my_vhost.conf 

はまた、ここに私のnginxの設定ファイルです:

server { 
    listen 0.0.0.0:8080; 
    server_name localhost; 
    root /app; 
    index index.htm index.html; 

    location /evodms {                                     
    # First attempt to serve request as file, then                             
    # as directory, then fall back to displaying a 404.                            
    # root /usr/share/nginx/html;                                  
    # root /var/www/html/evodms;                                  
    try_files $uri $uri/ /evodms/index.php?$args;                             
    } 

    location ~ \.php$ {                                     
    fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;                          
    fastcgi_index index.php;                                
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                      
    include  fastcgi_params;                               
    } 
} 

私はすべてのコンテナを起動し、nginxコンテナはユーザ1001を生成したので、このユーザをwww-dataにマップしました。私のevodmsフォルダの所有権はwww-dataに設定されています。 メッセージ:

nginx_1 | 2017/10/14 06:12:39 [error] 25#0: *1 directory index of "/app/evodms/" is forbidden, client: 172.20.0.1, server: localhost, request: "GET /evodms/ HTTP/1.1", host: "localhost" 
nginx_1 | 172.20.0.1 - - [14/Oct/2017:06:12:39 +0000] "GET /evodms/ HTTP/1.1" 403 198 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" 

手がかりはありますか?

+0

次の2つのコンのファイルを持っていないのはなぜ? – sauerburger

+0

私は2つの分離ドッカー画像を使用しています – budiantoip

答えて

0

あなたのnginxはevodmsフォルダ内のindex.htmlを見つけようとします。あなたがインデックスをindex index.htm index.htmlとしてルートオプションの下に設定したためです。

あなたのevodmsはあなたのパブリックフォルダの権利の下に存在すると思いますか?

このような場所パスを設定すると、

location /evodms {                                     
    try_files $uri $uri/ /evodms/index.php?$args;                             
} 

try_filesを参照してください。注文は$ uriと$ uri /です。 nginxはurl/evodms /がフォルダかどうかを確認しますか?はいの場合は、それを返します。もしそうでなければ、nginxは他のオプションを試してみるでしょう。

確認方法。 まず、evodmsフォルダにindex.htmlファイルを追加してみてください。 nginxがevodmsを成功裏にフォルダーとして定義しているため、アクセスするとページに表示されます。

$uri/try_filesから取り出すだけです。だからnginxはフォルダとしてevodmsを定義しようとしないでください。次のオプションとして直接書き換えます。 evodms/index.php?$argsです。あなたのnginxの設定から/evodmsの場所は、すべての要求のために働く

0

/evodmsから始まり、そう、たとえば、あなたが/evodms/testを要求したとき、nginxのは、その後、最初の/app/evodms/test/フォルダを/app/evodms/testファイルをしようとし、最終的に/app/evodms/index.php?$argsをしようとします。

しかし、あなたは/evodms/を要求するとき、それは場所/evodmsため/である、/app/evodms/をしようとします。この場合、nginxはindexオプションで定義したインデックスファイルを試します。あなたの/app/evodmsフォルダにindex.htmlindex.htmがないようですので、403の禁止エラーが表示されます。

<your_domain>/evodms/に要求を解決するためには、インデックスファイルのリストにindex.phpを追加する必要があります:

index index.htm index.html index.php; 
関連する問題