You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

宿主机Nginx对接Docker Compose部署Laravel出现默认欢迎页问题求助

Laravel访问显示Nginx默认页问题修复方案

1. Nginx配置修正

  • 补全server_name标识,否则Nginx会将请求分发到默认欢迎页站点
  • 修正root路径指向Laravel入口目录public,避免暴露敏感文件同时保证路由正常
  • 替换fastcgi_pass地址,宿主机Nginx需要转发请求到Docker容器内的php-fpm服务,而非宿主机不存在的php-fpm套接字
  • 补全SSL证书配置,否则443端口无法正常响应HTTPS请求,也可临时改为监听80端口测试
  • 建立站点配置软链到启用目录,重载Nginx生效

修正后的Nginx配置参考

# 临时用80端口测试可把下面443相关换成 listen 80;
server {
    listen 443 ssl http2;
    server_name dev.mycompany.com;
    # 补全你的SSL证书配置
    ssl_certificate /path/to/your/fullchain.pem;
    ssl_certificate_key /path/to/your/privkey.pem;

    index index.php index.html;
    error_log  /var/log/nginx/dev.mycompany.com-error.log;
    access_log /var/log/nginx/dev.mycompany.com-access.log;
    # 指向Laravel的public目录
    root /var/www/dev.mycompany.com/public;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # 转发到容器映射到宿主机的php-fpm端口
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

配置生效命令

# 建立软链启用站点
ln -s /etc/nginx/sites-available/www/dev.mycompany.com /etc/nginx/sites-enabled/
# 验证配置语法
nginx -t
# 重载Nginx
systemctl reload nginx

2. Docker配置修正

docker-compose.yml调整

  • 给app-backend服务添加9000端口映射,让宿主机Nginx可以访问到容器内的php-fpm
  • 修正build上下文路径,避免构建时找不到代码文件
  • 修正拼写错误的环境变量键名

修正后的app-backend配置参考

app-backend:
      build:
        # 上下文改为Laravel代码根目录
        context: /var/www/dev.mycompany.com
        dockerfile: Dockerfile
      restart: unless-stopped
      container_name: web-backend
      tty: true
      ports:
        # 映射php-fpm端口到宿主机本地
        - "127.0.0.1:9000:9000"
      environment:
        SERVICE_NAME: app
        # 修正原来的拼写错误SERICE_TAGS => SERVICE_TAGS
        SERVICE_TAGS: dev
      working_dir: /var/www/dev.mycompany.com
      volumes:
        - /var/www/dev.mycompany.com:/var/www/dev.mycompany.com
        - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
      networks:
        - app-network

Dockerfile路径修正

原来的Dockerfile中存在路径拼写错误,把/var/www/dev.mycompany.com误写为/var/www.dev.mycompany.com,统一修正路径:

FROM php:8.0-fpm

# 修正路径拼写
COPY composer.lock composer.json /var/www/dev.mycompany.com

WORKDIR /var/www/dev.mycompany.com

# 原有依赖安装、扩展安装、composer安装步骤不变

# 修正COPY路径拼写,删除重复的冗余COPY . /var/www 步骤
COPY --chown=www:www . /var/www/dev.mycompany.com

USER www

EXPOSE 9000
CMD ["php-fpm"]

目录权限修正

Laravel需要storage和bootstrap/cache目录可写,执行宿主机命令赋予对应权限:

chown -R 1000:1000 /var/www/dev.mycompany.com/storage /var/www/dev.mycompany.com/bootstrap/cache
chmod -R 775 /var/www/dev.mycompany.com/storage /var/www/dev.mycompany.com/bootstrap/cache

3. 生效验证步骤

# 进入docker-compose所在目录
cd /srv
# 重新构建并启动Laravel容器
docker-compose up -d --build app-backend
# 验证容器正常运行
docker ps | grep web-backend
# 验证9000端口正常监听
ss -tunlp | grep 9000

配置全部生效后清理浏览器缓存访问站点即可,若仍有异常查看对应日志排查:

  • Nginx错误日志:/var/log/nginx/dev.mycompany.com-error.log
  • Laravel运行日志:/var/www/dev.mycompany.com/storage/logs/laravel.log
  • 容器运行日志:docker logs web-backend

内容的提问来源于stack exchange,提问作者NotGael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:45:04