Рейтинг:0

nginx отлично работает на локальном хосте, но показывает 404 на сервере

флаг ru

У меня есть проект на основе laravel, который я должен разместить в цифровом океане с помощью докера. докер отлично работает на локальном хосте, но показывает 404 на сервере, но phpmyadmin также отлично работает на сервере, который работает на 8080 порт.

Вот мой докер-compose.yml

 версия: '3'

сети:
  Ларавель:


Сервисы:
  нгинкс:
    изображение: nginx: стабильный-альпийский
    имя_контейнера: nginx
    порты:
      - "8088:80"
    тома:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    зависит от:
      - пхп
      - mysql
    сети:
      - ларавель

  MySQL:
    изображение: MySQL: 5.7.22
    перезапуск: если не остановлен
    телетайп: правда
    порты:
      - "4306:3306"
    тома:
      - ./mysql:/var/lib/mysql
    среда:
      MYSQL_ROOT_PASSWORD: «корень»
      MYSQL_DATABASE: «ларавел_тест»
      MYSQL_USER: «корень»
      MYSQL_PASSWORD: «корень»
      SERVICE_TAGS: "разработчик"
      ИМЯ_СЛУЖБЫ: "mysql"
    сети:
      - ларавель

  php:
    строить:
      контекст: .
      докерфайл: Докерфайл
    имя_контейнера: php
    тома:
      - ./src:/var/www/html
    порты:
      - "9000:9000"
    перезапуск: если не остановлен

    сети:
      - ларавель

  phpmyadmin:
    изображение: phpmyadmin
    перезапуск: всегда
    порты:
      - 8080:80
    среда:
      - PMA_ARBITRARY=1
    ссылки:
      - mysql
    сети:
      - ларавель

  нпм:
    изображение: узел: 18-alpine3.14
    имя_контейнера: нпм
    тома:
      - ./src:/var/www/html
    рабочий_каталог: /var/www/html
    точка входа: ['npm', '--no-bin-links']
    сети:
      - ларавель

  композитор:
    изображение: композитор: последний
    имя_контейнера: композитор
    тома:
      - ./src:/var/www/html
    рабочий_каталог: /var/www/html
    зависит от:
      - пхп
    сети:
      - ларавель

Докерфайл

ИЗ php:8.1.0-fpm

ЗАПУСК docker-php-ext-install pdo pdo_mysql

default.conf

сервер{
    слушать 80;
    индекс index.php index.html;
    имя_сервера локальный хост;
    журнал_ошибок /var/log/nginx/error.log;
    журнал_доступа /var/log/nginx/access.log;
    корень /var/www/html/public;
    место расположения / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    расположение ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass PHP: 9000;
        fastcgi_index index.php;
        включить fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

мой файл php находится в ./src/public/

флаг ge
(1) Вы уверены, что разговариваете напрямую с сервером, а не с кэширующим прокси? (2) Какой путь находится в URL-адресе, который вы тестируете? (3) Соответствует ли этот путь имени файла относительно `/var/www/html/public`? (4) Существует ли `/var/www/html/public/index.php`?
rootShiv avatar
флаг ru
да, файл существует, и он работает на локальном хосте. я не понял ваш вопрос 1,2. я новичок в работе с докером и сервером в целом
флаг ge
Чтобы подтвердить (1), просто убедитесь, что _что-то_ появляется в `/var/log/nginx/access.log` или `/var/log/nginx/error.log`, когда вы пытаетесь получить к нему доступ извне. Если нет, то вы на самом деле не подключаетесь к _this_ серверу, что-то еще выдает вам ошибку 403. Под (2) я подразумеваю URL-адрес с `https://domain.name/`, удаленный спереди, и любые `?query=string` и `#anchor`, удаленные с конца.Дополнительный вопрос: под «работой на локальном хосте» вы подразумеваете, что используете клиент (например, `curl` или `wget`) с URL-адресом типа `https://localhost/src/public/yourpage.php`?
rootShiv avatar
флаг ru
как мне получить доступ к `/var/log/nginx/access.log`. Я новичок в разработке Linux и Ops.
флаг ge
Есть много _много_ опций, поэтому проще всего сказать "так же, как вы получаете доступ к `./src/public/yourscript`"

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.