2017-10-14 16 views
1

저는 Linux Mint 18.2와 docker를 사용하고 있습니다. 현재 bitnami에서 2 개의 도커 컨테이너를 가지고 있습니다. 1은 nginx이고, 다른 하나는 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입니다 :

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;                               
    } 
} 
: 또한

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의 설정입니다

모든 컨테이너를 시작했고 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

을 두 개 작성 파일이있는 이유는 무엇입니까? – 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;