You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker部署Nginx+PHP-FPM环境下静态资源返回403 Forbidden问题求助

Docker部署Nginx+PHP-FPM环境下静态资源返回403 Forbidden问题求助

大家好,我正在把本地的PHP/Nginx开发环境迁移到Docker上,大部分功能都跑通了,唯独所有静态资源(.css、.js、*.jpg这类)访问时都会返回403 Forbidden。我一整天都在翻各种解决方案试,但都没解决问题。

网上这类问题的常见方案是把容器用户改成特定UID(我的情况是1000),但这么做之后Nginx容器启动直接报Permission denied 13错误,根本跑不起来。

我的环境信息:

  • 主机系统:PopOS(Linux)
  • 使用的容器:
    • Nginx:nginx:latest
    • PHP:php:8.2-fpm
  • 两个容器都自定义了Dockerfile,通过docker-compose.yml管理

目前的情况是:访问localhost:3030能正常加载index.php等动态内容,但访问比如localhost:3030/dist/images/test.png这类静态资源就会触发403。我猜测是Nginx没有这些文件的访问权限,但实在搞不懂该怎么授权——因为是本地开发环境,我没有把文件复制进容器,只是通过卷绑定把本地项目目录挂载到了两个容器里,PHP容器的挂载和Nginx是一样的。感觉应该是漏了个很基础的配置,不然不该卡这么久。

项目文件结构示例:

/public/
/public/index.php
/public/dist/
/public/dist/images/test.png

我的配置文件:

docker-compose.yml

version: '3.7'

services:
  ngnx:
    build: ./nginx/
    container_name: nginx-container
    restart: unless-stopped
    links:
      - php
    volumes:
      - ./www/html/:/var/www/html/
      - ./www/logs/:/var/log/nginx/
  php:
    build: ./php/
    container_name: php-container
    restart: unless-stopped
    expose:
      - 9000
    volumes:
      - ./www/html/:/var/www/html/

./nginx/Dockerfile

FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf

./php/Dockerfile

FROM php:8.2-fpm
RUN apt-get update -y && apt-get upgrade -y

./nginx/default.conf

server {
    listen 80 default_server;
    root /var/www/html/public;
    index index.php;
    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    access_log /var/log/nginx/error.log;
    error_log /var/log/nginx/error.log error;

    sendfile off;
    client_max_body_size 100m;

    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass php-container:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }
}

有没有大佬能帮我看看哪里出问题了?实在想早点搞定这个新的本地开发环境😭

备注:内容来源于stack exchange,提问作者WiZu

火山引擎 最新活动