Docker机器用户无法访问主机

时间:2016-09-02 15:27:20

标签: php ubuntu nginx docker debian

我在远程计算机上设置docker环境时遇到问题。

我准备了当地的码头机器。问题在于nginx + php-fpm。

Nginx充当nginx用户,php-fpm充当www-data用户。主机上的文件(应用程序文件)归user1所有。 chmods是symfony2应用程序的默认值。

当我访问我的网络服务器时,它会返回404错误或只是简单的"找不到文件"。

有一段时间完全相同的配置适用于我的本地Ubuntu 16.04,但在服务器上的Debian Jessie上失败了。现在它并不适用于两者。我尝试了一切,在sysops小组上询问并用谷歌搜索了几个小时。你知道吗?

这是我的虚拟主机配置

server {
  listen      80;
  server_name dev.xxxxx.co xxxxx.dev;
  root        /usr/share/www/co.xxxxx.dev/web;
  index       app_dev.php;

  client_max_body_size 100M;
  fastcgi_read_timeout 1800;

  location / {
    # try to serve file directly, fallback to app.php
    try_files $uri $uri/ /app.php$is_args$args;
  }

  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires       max;
    log_not_found off;
    access_log    off;
  }

  location ~ ^/(app_dev|config)\.php(/|$) {
    fastcgi_pass php-fpm:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    # When you are using symlinks to link the document root to the
    # current version of your application, you should pass the real
    # application path instead of the path to the symlink to PHP
    # FPM.
    # Otherwise, PHP's OPcache may not properly detect changes to
    # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
    # for more information).
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
  }

  location ~ ^/app\.php(/|$) {
    fastcgi_pass php-fpm:9000;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    # When you are using symlinks to link the document root to the
    # current version of your application, you should pass the real
    # application path instead of the path to the symlink to PHP
    # FPM.
    # Otherwise, PHP's OPcache may not properly detect changes to
    # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
    # for more information).
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
    # Prevents URIs that include the front controller. This will 404:
    # http://domain.tld/app.php/some-path
    # Remove the internal directive to allow URIs like this
    internal;
  }

  location ~ \.php$ {
    return 404;
  }
}

nginx配置

user              root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

我的码头组成

version: '2'
services:
    nginx:
        image: nginx
        ports:
            - 8082:80
        volumes:
            - /home/konrad/Workspace:/usr/share/www:ro
            - ./conf/nginx.conf:/etc/nginx/nginx.conf:ro
            - ./sites:/etc/nginx/conf.d:ro

    php-fpm:
        image: php:fpm
        ports:
            - 9000:9000
        volumes:
            - /home/konrad/Workspace:/usr/share/www
            - ./conf/www.conf:/etc/php/7.0/fpm/pool.d/www.conf
            - ./conf/php.ini:/usr/local/etc/php/conf.d/90-php.ini:ro

在远程服务器文件上是可访问的,可见为1001:1001的属性

0 个答案:

没有答案