Search code examples
phplaraveldockernginxapache2

Laravel 10. The route XXX could not be found


While GET http://localhost:8000/up php artisan serve (locally) I get response

While GET https://example.com/api/up I get response

While GET https://example.com/api2/up get {"error":"The route up could not be found."}

Please> help with fix this error, I spend all day on it =(

Api1 -> Laravel 5.3, PHP 7.0.33 Api2 -> Laravel 10, PHP 8.3.1

Configs below:

Dockerfile:

FROM php:8.3-apache

# set main params
ENV APP_HOME /var/www/html
ENV USERNAME=www-data
ARG HOST_UID=1000
ARG HOST_GID=1000

RUN apt update
RUN apt upgrade -y
RUN apt install -y sudo
RUN apt install -y nano
RUN apt install -y cron #
RUN apt install -y wget #
RUN apt install -y curl #
RUN apt install -y libcurl4-openssl-dev #
RUN apt install -y libmcrypt-dev #
RUN apt install -y libzip-dev #
RUN apt install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev #
RUN apt install -y libonig-dev #
RUN apt install -y libpq-dev #
RUN apt install -y libxml2-dev #

RUN docker-php-ext-install curl #
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/
RUN docker-php-ext-install gd #
RUN docker-php-ext-install mbstring #
RUN docker-php-ext-install pdo_pgsql #
RUN docker-php-ext-install xml #
RUN docker-php-ext-install dom #
RUN docker-php-ext-install zip #

RUN docker-php-ext-enable curl #чтобы компорез шустро фурычил
RUN docker-php-ext-enable gd #
RUN docker-php-ext-enable mbstring #
RUN docker-php-ext-enable pdo_pgsql #
RUN docker-php-ext-enable xml #
RUN docker-php-ext-enable dom #
RUN docker-php-ext-enable zip #

RUN rm -rf /tmp/*
RUN rm -rf /var/list/apt/*
RUN rm -rf /var/lib/apt/lists/*
RUN apt clean

RUN rm -rf ${APP_HOME}/*

RUN mkdir -p ${APP_HOME}/public && \
    mkdir -p /home/$USERNAME && \
    chown $USERNAME:$USERNAME /home/$USERNAME && \
    usermod -o -u $HOST_UID $USERNAME -d /home/$USERNAME && \
    groupmod -o -g $HOST_GID $USERNAME && \
    chown -R ${USERNAME}:${USERNAME} $APP_HOME

# disable default site and delete all default files inside APP_HOME
RUN rm /etc/apache2/sites-available/000-default.conf
RUN rm /etc/apache2/sites-available/default-ssl.conf
RUN rm /etc/apache2/sites-enabled/000-default.conf

COPY php.ini /usr/local/etc/php/php.ini
COPY apache/apache2.conf /etc/apache2/apache2.conf
COPY apache/server.conf /etc/apache2/sites-available/server.conf
COPY apache/envvars /etc/apache2/envvars
RUN a2ensite server.conf

# enable apache modules
RUN a2enmod rewrite
RUN a2enmod ssl

RUN mkdir /root/.postgresql
COPY ymdb.pem /root/.postgresql/root.crt
RUN chmod 0600 /root/.postgresql/root.crt

COPY ./cron /etc/cron.d/crm-cron
RUN chmod 0600 /etc/cron.d/crm-cron # Give execution rights on the cron job
RUN touch /var/log/cron.log


RUN mkdir -p ${APP_HOME}/public && chown -R ${USERNAME}:${USERNAME} ${APP_HOME}

COPY --chown=${USERNAME}:${USERNAME} --chmod=777 . ${APP_HOME}/
COPY --chown=${USERNAME}:${USERNAME} --chmod=777 .env.production ${APP_HOME}/.env
RUN mkdir ${APP_HOME}/storage
RUN mkdir ${APP_HOME}/storage/logs
RUN mkdir ${APP_HOME}/storage/sessions
RUN mkdir ${APP_HOME}/storage/views
RUN mkdir ${APP_HOME}/storage/cache

nginx.conf:

server {
    listen      *:80;
    listen      *:443 ssl;
    server_name example.com;

    access_log /var/log/nginx/crm.access.log;
    error_log /var/log/nginx/crm.error.log;
    gzip on;


    location /api {
      proxy_connect_timeout 1200;
      proxy_send_timeout 1200;
      proxy_read_timeout 1200;
      proxy_pass http://api/;
    }

    location /api2 {
      proxy_connect_timeout 1200;
      proxy_send_timeout 1200;
      proxy_read_timeout 1200;
      proxy_pass http://api2/;
    }

    location / {
      proxy_pass http://crm/;
    }

}

apache.conf:

<VirtualHost *:80>
    ServerName localhost

    ServerAdmin [email protected]
    DocumentRoot /var/www/html/public

    #ErrorLog /dev/stderr
    #CustomLog /dev/stdout combined

    <Directory /var/www/html>
        DirectoryIndex index.php
        AllowOverride All
        Order  allow,deny
        allow from all
    </Directory>

</VirtualHost>

Solution

  • Problem was with nginx! Was:

    location /api2 {
      proxy_connect_timeout 1200;
      proxy_send_timeout 1200;
      proxy_read_timeout 1200;
      proxy_pass http://api2/;
    }
    

    need:

    location ^~ /api2/ {
      proxy_connect_timeout 1200;
      proxy_send_timeout 1200;
      proxy_read_timeout 1200;
      proxy_pass http://api2/;
    }