使用Docker部署Laravel并配置反向代理时遭遇Internal Server Error的问题求助
使用Docker部署Laravel并配置反向代理时遭遇Internal Server Error的问题求助
各位大佬好,我第一次尝试用Docker部署Laravel应用,结果访问URL的时候遇到了内部服务器错误,折腾了半天没找到问题所在,想请大家帮忙排查一下!
我的环境是两台服务器:
- 10.0.0.12:带公网IP,用来做Nginx反向代理
- 10.0.0.81:专门运行Laravel应用的服务器
反向代理服务器(10.0.0.12)的Nginx配置
我在这台服务器上配置了Nginx反向代理,把请求转发到Laravel服务器的指定端口:
server { listen 8666; server_name 10.0.0.12; location / { proxy_pass http://10.0.0.81:8555; } }
Laravel项目中的Dockerfile配置
这是我放在Laravel项目根目录下的Dockerfile:
FROM php:7.4-apache RUN apt-get update && apt-get install -y \ git \ unzip \ libonig-dev \ libzip-dev \ libpng-dev \ libjpeg-dev \ libfreetype6-dev \ && docker-php-ext-install pdo_mysql mbstring zip exif pcntl bcmath gd RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer WORKDIR /var/www/html/laravel-cms COPY . . RUN composer install --no-scripts RUN php artisan key:generate RUN chmod -R 777 storage bootstrap/cache # Expose port 80 di dalam container EXPOSE 80 # Set permission pada Apache RUN chown -R www-data:www-data /var/www/html/laravel-cms CMD ["apache2-foreground"]
Laravel项目的Docker Compose配置
同时我也写了Docker Compose文件来管理容器:
version: '3' services: web: build: context: . dockerfile: Dockerfile image: laravel-app container_name: laravel_cms-container restart: unless-stopped ports: - "8555:80" volumes: - .:/var/www/html/laravel-cms networks: - laravel networks: laravel:
操作过程与错误信息
我已经在Laravel服务器上运行了docker build和docker-compose up命令,整个过程没有报错,容器也正常启动了。但当我在浏览器访问10.0.0.12:8666时,就出现了内部服务器错误,查看反向代理服务器的Nginx错误日志,得到了这样的内容:
request: "GET / HTTP/1.1", upstream: "http://10.0.0.81:5555/", host: "10.0.0.12:8666" 2023/12/20 15:42:01 [error] 178771#178771: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.0.0.1, server: 10.0.0.12
(注:日志里显示的上游端口是5555,但我实际配置的是8555,不确定是不是日志输出的笔误)
我是不是哪里的配置出错了?第一次用Docker,真的很迷茫,希望大家能给我一些排查方向或者解决方法,非常感谢!
备注:内容来源于stack exchange,提问作者Catto
相关产品推荐
相关产品推荐

