使用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.yml中php-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 'causephp-fpmrunning overfastcgi. 然后我链接了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。
我能做些什么来解决这个问题?