Wordpress на Docker не загружает правильные страницы: Nginx отправляет 301 после 404 и /$uri/index.php не найдена ошибка (такого файла или каталога нет) - PullRequest
0 голосов
/ 06 ноября 2018

Перед нами стоит задача перенести производство в среду разработки на Docker. Пока что у меня PHP и Nginx работают в отдельном контейнере, потому что нам нужно будет иметь много разных контейнеров для всех наших веб-сайтов, но одно и то же изображение nginx.

У меня есть главная страница для загрузки, но, как она выглядит, WordPress не загружает свои страницы с помощью своих пользовательских URI, а вместо этого пытается использовать URI в качестве фактического подкаталога, а затем загружает index.php .

Я включил в нее свои nginx.conf, docker-compose.yml и /var/log/nginx/error.log выходные данные.

При переносе рабочего сайта WordPress из Prod в Docker загружается только начальная страница.

Когда я перехожу на local.www.website.com, я получаю правильный ответ: первая страница.

Когда я нажимаю на любую из под-ссылок или набираю URL: http://local.www.website.com:8080/khat/, I receive an error in the browser: local.www.website.com отказывается подключаться.

Когда я использую curl: curl -v http://local.www.greenhousetreatment.com:8080/khat/ Я получаю 301.

Когда я проверяю журналы ошибок Nginx (/ var / log / nginx / errors.log`), я получаю:

2018/11/05 21:37:33 [error] 187#187: *45 
"/var/www/website.com/current/html/khat/index.php" is not 
found (2: No such file or directory), client: 172.26.0.1, server: 
local.www.website.com, request: "GET /khat/ HTTP/1.1", host: 
"local.www.website.com:8080"

Мой website.conf файл nginx выглядит так:

 server {
   server_name local.www.website.com;
   root /var/www/website.com/current/html;
   index index.php;

   access_log  /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log warn;


   location = /robots.txt  { access_log off; log_not_found off; }
   location = /favicon.ico { access_log off; log_not_found off; }

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

   error_page 404 = /index.php?$args;

   # include /var/www/website.com/current/app/conf/nginx/redirects.conf;

   location ^~ /wp-content/uploads/ {
       proxy_pass https://s3-us-west-2.amazonaws.com/website.com/uploads/;
   }

   location ~* ^/listings/(.*[^/])$ {
       return 301 /listings/$1/;
   }

   # CSS and Javascript
   location ~* \.(?:css|js)$ {
       expires 30d;
       access_log off;
       add_header Cache-Control "public";
   }


   location ~ \.php$ {
       include fastcgi_params;
       fastcgi_pass php:9000;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param REMOTE_ADDR $http_x_forwarded_for;
       fastcgi_param DEFAULT_REMOTE_ADDR $remote_addr;
       fastcgi_param APP_ENV "prof";
       fastcgi_param APP_WP_DB_NAME "website.com";
       fastcgi_param APP_WP_DB_USER "root";
       fastcgi_param APP_WP_DB_PASSWORD '1234'; 
       fastcgi_param APP_WP_DB_HOST "mysql:3306";
       fastcgi_param APP_WP_S3_UPLOADS_BUCKET "website.com"; 
       fastcgi_param APP_WP_S3_UPLOADS_KEY "1234";
       fastcgi_param APP_WP_S3_UPLOADS_SECRET '123/123/+123'; 
       fastcgi_param APP_WP_S3_UPLOADS_REGION "us-west-2"; 
   } 
}

Мой контейнер nginx открыт для портов: «8080: 80», а мой php-fpm - «9000: 9000»

Вот мой docker-compose.yml

version: "3"
services:
  web: 
    image: nginx:latest
    container_name: ght-nginx
    ports:
      - "8080:80"
    volumes:
      - ./website.com/current:/var/www/website.com/current
      - ./etc/nginx/sites-available/ght-nginx.conf:/etc/nginx/conf.d/site.conf
      - ./website.com/shared/logs/:/var/log/nginx/
      - ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf
    links:
      - php
  php:
    image: php7.0-fpm-aac
    container_name: ght
    volumes:
        - ./website.com/current:/var/www/website.com/current
        - ./website.com/shared/logs/:/var/log/nginx/
        - ./sites/php/sites.conf:/etc/php/7.0/fpm/pool.d/php-fpm.conf

    ports:
      - "9000:9000"


 mysql:
   image: mysql:5.7
   container_name: ght-mysql
   ports:
     - "3306:3306"
   environment:
     MYSQL_ROOT_PASSWORD: 1234
   volumes:
     - ./mysql/library/:/var/lib/mysql
     - ./mysql/dumps/:/tmp/mysql/dumps

Что мне не хватает? Я попытался изменить открытый порт в docker-compose на 9000:80, я попытался добавить И удалить

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

Я попытался добавить следующий блок кода внизу wp-config.php

 define('WP_HOME','http://local.www.website.com:8080');
 define('WP_SITEURL','http://local.www.website.com:8080');

Я не уверен, что еще нужно сделать. Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...