docs(docker): add nginx + PHP-FPM reference configuration to fix login redirect loop#8207
Draft
docs(docker): add nginx + PHP-FPM reference configuration to fix login redirect loop#8207
Conversation
Co-authored-by: DawoudIO <554959+DawoudIO@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix login loop issue after ChurchCRM setup
docs(docker): add nginx + PHP-FPM reference configuration to fix login redirect loop
Mar 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ChurchCRM users deploying with nginx + PHP-FPM hit an infinite redirect loop (
/session/begin → /session/begin) because nginx routes everything to the rootindex.php, which redirects unauthenticated users to/session/begin— which also hitsindex.php— and so on.The loop happens because ChurchCRM has 9 independent Slim 4 entry points (one per subdirectory). Apache resolves this automatically via per-directory
.htaccessmod_rewrite rules; nginx requires explicitlocationblocks per sub-app.Changes
docker/nginx/default.conf— nginx server block withlocation ^~blocks routing each sub-application prefix to its ownindex.php. Regex locations for static assets and PHP, security denies for/logs,/tmp_attach, and dotfiles. Commented subdirectory-install variant at the bottom.docker/Dockerfile.churchcrm-fpm-php8— PHP-FPM multi-stage image (prod/dev) with all required extensions (bcmath,gd,intl,mysqli,pdo_mysql,sodium,zip, …). Mirrors the existingDockerfile.churchcrm-apache-php8.docker/docker-compose.nginx.yaml— Self-contained Compose reference (MariaDB + PHP-FPM + nginx). Not wired into CI; intended as a starting point for self-hosted deployments.docker/README.md— Added intro table distinguishing dev/CI (Apache) from self-hosted (nginx), plus a new section explaining the routing architecture, the loop pitfall, quick-start, and customisation notes.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.