
Ya vi otras publicaciones aquí sobre un problema similar, pero creo que la mía necesita una solución diferente porque las otras publicaciones no ayudaron.
Estoy ejecutando dos contenedores separados con Docker: For php-fpm
y for nginx
. Cuando intento mostrar texto usando index.html
un archivo, todo está bien, pero cuando cambio el nombre del archivo, index.php
descarga un archivo de "descarga".
No estoy seguro si es solo por mi default.conf
archivo o por cómo configuro mis contenedores.
Este es mi docker-compose.yml
:
networks:
laravel:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8088:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
networks:
- laravel
mysql:
image: mysql
container_name: mysql
tty: true
ports:
- "4306:3306"
volumes:
- ./src:/var/lib/mysql
environment:
MYSQL_DATABASE: laravel
MYSQL_ROOT_USER: root
MYSQL_ROOT_PASSWORD: secret
SERVICE_TAGS: dev
SERVICE_NAME: mysql
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ./src:/var/www/html
ports:
- "9000:9000"
networks:
- laravel
Este es mi default.conf
:
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Respuesta1
Parece que te falta la parte principal: la fastcgi_pass
directiva para reenviar la solicitud a FPM. Agregue esto en la location ~ \.php$
sección:
fastcgi_pass php:9000;
Ver tambiénel ejemplo en la documentación de Nginx.