使用nginx-proxy找不到nginx返回文件并且不加载静态文件

我正在使用nginx-proxy-automation运行我使用编写的 php 应用程序,CodeIgniter 4应用程序结构如下:

php-application
   docker
       php-fpm
            config
                php.ini
           Dockerfile
   src
       node_modules
       app
       public
       tests
       vendor
       writable
       .env
       composer.json
       package.json
       spark
   docker-comopse.yml

index.php文件在public文件夹内可用。该docker-compose.ymlphp-application包含了以下的东西:

nginx
    nginx-proxy
       docker-compose.yml
    php-application
       docker-compose.yml

在里面php-application/docker-compose.yml我有这个:

version: '3.7'

services:
  php-fpm:
    container_name: boilerplate_app
    restart: always
    build:
      context: .
      dockerfile: ./docker/php-fpm/Dockerfile
    volumes:
      - ./src:/var/www/html
    environment:
      # NGINX-PROXY ENVIRONMENT VARIABLES: UPDATE ME
      - VIRTUAL_HOST=mysite.com
      - VIRTUAL_ROOT=/var/www/html/public
      - VIRTUAL_PORT=9000
      - VIRTUAL_PROTO=fastcgi
      - LETSENCRYPT_HOST=mysite.com
      - LETSENCRYPT_EMAIL=info@mysite.com
      - NETWORK=proxy
      # /END NGINX-PROXY ENVIRONMENT VARIABLES
    ports:
      - '9000:80'
    expose:
      - 9000
    networks:
      - proxy

  database:
    container_name: boilerplate_db
    restart: always
    build:
      context: ./docker/database
    environment:
      - MYSQL_DATABASE=boilerplate
      - MYSQL_USER=user
      - MYSQL_PASSWORD=secret
      - MYSQL_ROOT_PASSWORD=secret
    volumes:
      - ./docker/database/data.sql:/docker-entrypoint-initdb.d/data.sql

  phpmyadmin:
    container_name: boilerplate_phpmyadmin
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - 8088:80
    environment:
      - PMA_HOST=database
      - MYSQL_USER=user
      - MYSQL_PASSWORD=secret
      - MYSQL_ROOT_PASSWORD=secret
    depends_on:
      - database

networks:
  proxy:
    external:
      name: proxy

基本上我有三项服务:

  • php-fpm:在/var/www/html文件夹中挂载应用程序文件,在该environment部分中,我已指定VIRTUAL_PORT为 9000 'cause php-fpmrunning over fastcgi. 然后我链接了proxy网络,这是您图像的网络。
  • 数据库:在应用程序网络内运行
  • phpmyadmin:在应用网络内运行

Dockerfile内容php-fpm包含以下内容:

FROM php:8.0.2-fpm-alpine
WORKDIR /var/www/html

RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install mysqli
RUN apk add icu-dev

# Install intl
RUN docker-php-ext-configure intl && docker-php-ext-install intl

# Install curl
RUN apk add --update libzip-dev curl-dev &&
    docker-php-ext-install curl && 
    apk del gcc g++ &&
    rm -rf /var/cache/apk/*

COPY docker/php-fpm/config/php.ini /usr/local/etc/php/

# Install composer
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

# Install nodejs
RUN apk add --update nodejs nodejs-npm
RUN npm install gulp-cli -g
RUN npm install

COPY src src/

CMD ["php-fpm"]

EXPOSE 9000

当我使用启动容器docker-compose up --build -d时,我在访问时收到此消息mysite.com(为了隐私,我隐藏了真实域):

文件未找到。

nginx使用sudo docker logs -f nginx我检查日志得到:

[error] 30#30: *39 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 2.38.140.109, server: mysite.com, request: "GET / HTTP/2.0", upstream: "fastcgi://172.28.0.7:9000", host: "mysite.com"
mysite.com 2.38.140.109 - - [29/Mar/2021:17:52:31 +0000] "GET / HTTP/2.0" 404 16 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.63"

为了解决这个问题,我已经nginx.tmpl用这个更新了。

现在的问题是,当我加载我的网站时,所有静态文件(例如 js/image/css)都返回 404。

我能做些什么来解决这个问题?

以上是使用nginx-proxy找不到nginx返回文件并且不加载静态文件的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>