Ошибка прокси-сервера Прокси-сервер получил неверный ответ от вышестоящего сервера. Прокси-сервер не смог обработать запрос

Я запускаю проект Laravel, используя docker-compose, и вот docker-compose.yaml:

version: '3.7'
services:
  apis:
    ports:
       - "9000:80"
    build:
      dockerfile: Dockerfile
      context: ./apis
  menu_service:
    ports:
      - "9001:80"
    build:
      dockerfile: Dockerfile
      context: ./menu-service
  restaurant_service:
    ports:
       - "9002:80"
    build:
      dockerfile: Dockerfile
      context: ./restaurant-service

А это Dockerfile:

FROM php:8.3-apache


RUN apt-get update && \
apt-get install -y \
libzip-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev && \
docker-php-ext-configure gd && \
docker-php-ext-install gd \
zip

RUN a2enmod rewrite

RUN docker-php-ext-install pdo_mysql zip

ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

COPY apis.conf /etc/apache2/sites-available/

RUN a2ensite apis.conf
RUN service apache2 restart

COPY . /var/www/html

WORKDIR /var/www/html

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

ENV COMPOSER_ALLOW_SUPERUSER=1
RUN composer self-update --2
RUN composer install
RUN composer dump-autoload

RUN php artisan key:generate

RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache

apis.conf :

Listen 9000

<VirtualHost *:9000>
   ServerName localhost
   DocumentRoot /var/www/html

   <Directory /var/www/html>
       AllowOverride All
   </Directory>

</VirtualHost>

Также я добавил это в httpd.conf на сервере:

<VirtualHost *:80>
   ProxyPreserveHost On
   ProxyRequests Off
   ProxyPass / http://localhost:9000/
   ProxyPassReverse / http://localhost:9000/>
</VirtualHost>

Все в порядке, но я не могу подключиться к другим контейнерам и пытался связаться с ними по IP-адресу контейнера, но это было невозможно. Кстати, на моем компьютере это работает, а проблема только на сервере.

Также это вывод netstat:

$ netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:9002            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:9001            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:44195         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::443                  :::*                    LISTEN     
tcp6       0      0 :::9002                 :::*                    LISTEN     
tcp6       0      0 :::9000                 :::*                    LISTEN     
tcp6       0      0 :::9001                 :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::80                   :::*                    LISTEN   

Когда я вызываю API, используя IP-адрес контейнера с помощью Curl, я получил эту ошибку: "message": "cURL error 28: Failed to connect to 192.168.96.2 port 80 after 133115 ms: Couldn't connect to server (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)

Также, если я вызову API напрямую через curl -s localhost:9001/api/blahblah, я получу следующее сообщение:

<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access this resource.</p>
<hr>
<address>Apache/2.4.59 (Debian) Server at localhost Port 9001</address>
</body></html>

И в конечном итоге это сообщение, когда я вызываю API с помощью http://example.com/api/blahblah:

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request

Reason: Error reading from remote server
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
313
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я забыл скопировать содержимое каталога public для меню_сервиса и ресторана_сервиса, что и вызвало ошибку.

Другие вопросы по теме