Я запускаю проект 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
ServerName localhost
DocumentRoot /var/www/html
AllowOverride All
Также я добавил это в httpd.conf на сервере:
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/>
Все в порядке, но я не могу подключиться к другим контейнерам и пытался связаться с ними по 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, я получаю это сообщение:
403 Forbidden
Forbidden
You don't have permission to access this resource.
Apache/2.4.59 (Debian) Server at localhost Port 9001
И в конечном итоге это сообщение, когда я вызываю 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
Подробнее здесь: https://stackoverflow.com/questions/784 ... ream-serve
Ошибка прокси-сервера Прокси-сервер получил неверный ответ от вышестоящего сервера. Прокси-сервер не смог обработать зап ⇐ Apache
1714480595
Anonymous
Я запускаю проект 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
ServerName localhost
DocumentRoot /var/www/html
AllowOverride All
Также я добавил это в httpd.conf на сервере:
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:9000/
ProxyPassReverse / http://localhost:9000/>
Все в порядке, но я не могу подключиться к другим контейнерам и пытался связаться с ними по 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, я получаю это сообщение:
403 Forbidden
Forbidden
You don't have permission to access this resource.
Apache/2.4.59 (Debian) Server at localhost Port 9001
И в конечном итоге это сообщение, когда я вызываю 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
Подробнее здесь: [url]https://stackoverflow.com/questions/78403121/proxy-error-the-proxy-server-received-an-invalid-response-from-an-upstream-serve[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия