Tengo dos contenedores docker como se muestra a continuación:
nginx ==> working as proxy web server (nginx web server) dist ==> working as a php-fpm container Y este es mi dist.conf :
server { server_name dist.me.com; root /var/www/html; location / { # try to serve file directly, fallback to index.php try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass dist:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; internal; } location ~ \.php$ { return 404; } error_log /var/log/nginx/dist_error.log; access_log /var/log/nginx/dist_access.log; } El problema es que si entro en dist.me.com , muestra bien el contenido de mi index.php . Pero si ingreso dist.me.com/index.php o dist.me.com/index2.php , aparece el error 404 Not Found .
Intenté cambiar algunos valores del archivo conf pero no me ayudó.
Tanto index.php como index2.php existen en la ruta /var/www/html .
Su dist.conf existente está diseñado para bloquear los URI que terminan en .php . La directiva internal evita que se acceda directamente a una ubicación, y también hay una ubicación que devuelve explícitamente 404 para cualquier URI que termine en .php .
Debe cambiar la regla de location , eliminar la directiva internal y eliminar el bloque de location que le sigue.
Por ejemplo, reemplace location ~ ^/index\.php(/|$) { ... } y location ~ \.php$ { ... } con el bloque de location única de la siguiente manera:
location ~ \.php(/|$) { fastcgi_pass dist:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; }