Вышестоящий php-fpm иногда выдает файл 404, не найденный при использовании docker-compose с nginx и php-fpm. - PullRequest
0 голосов
/ 10 июля 2019

В моей локальной среде разработки я использую docker-compose с контейнерами nginx и php-fpm, но иногда php-fpm имеет ошибку 404 file not found.Я всегда получаю его, когда происходит несколько вызовов AJAX.

Вот мой файл для создания docker.

version: '3'
services:
  nginx:
    build:
      context: docker
      dockerfile: nginx.dockerfile
    volumes:
      - ./:/var/www/html
    ports:
      - 80:80
    depends_on:
      - php
  php:
    build:
      context: docker
      dockerfile: php.dockerfile
    volumes:
      - ./:/var/www/html

nginx.conf

user  nginx;
worker_processes  4;
daemon off;

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;

    access_log  /var/log/nginx/access.log;
    # Switch logging to console out to view via Docker
    #access_log /dev/stdout;
    #error_log /dev/stderr;

    sendfile        on;
    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-available/*.conf;
}

conf.d / default.conf

upstream php-upstream {
    server php:9000;
}

sites-available / site.conf

server {

    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name localhost;
    root /var/www/html/public;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }
}

nginx.dockerfile

FROM nginx

COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/default.conf /etc/nginx/conf.d/default.conf
COPY nginx/site.conf /etc/nginx/sites-available/site.conf

WORKDIR /var/www/

CMD [ "nginx" ]

EXPOSE 80 443

Когда я захожу на страницу, где происходит два вызова ajax, один из них дает мне 200

"GET /index.php" 200

следующий даст мне 404

ERROR: Unable to open primary script: /var/www/html/public/index.php (No such file or directory)

Часто, когда я обновляю, тот, который вышел из строя, теперь будет работать, а тот, который работал, теперь будет 404.

...