2017-10-14 134 views
1

我正在使用Linux Mint 18.2和docker。 目前我有2个来自bitnami的docker容器,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:

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,FYI,我的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为文件夹。

或者只是从try_files拿出$uri/。所以nginx不会尝试将evodms定义为文件夹。它会直接重写为下一个选项。这是evodms/index.php?$args

0

/evodms从你的nginx配置中的位置,适用于所有的请求从/evodms启动,因此,例如,当你请求/evodms/test,nginx的尝​​试/app/evodms/test文件,然后再/app/evodms/test/文件夹,最后尝试/app/evodms/index.php?$args

但是,当您请求/evodms/时,它会尝试/app/evodms/,这是/的位置/evodms。在这种情况下,nginx会尝试使用index选项中定义的索引文件。看起来你的/app/evodms文件夹中没有index.htmlindex.htm,所以你得到403禁止错误。

为了解决请求<your_domain>/evodms/,你应该添加index.php列出的索引文件:

index index.htm index.html index.php;