Add Nginx TLS configuration, structured logging, PHP-FPM upstream, and Filebeat integration
- Configure Nginx to use structured JSON access logs and add request ID headers. - Define upstream pool for PHP-FPM with load-balancing support. - Integrate Filebeat for log ingestion across Nginx and PHP logs. - Add `.env.example` and README for local TLS setup guidance. - Extend Dockerfile with PHP extensions (GD, Redis, etc.) and Composer dependency installs. - Add custom PHP configuration for Redis-backed session storage.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
### Local TLS certificates with Docker Compose
|
||||
|
||||
Nginx is configured to terminate TLS using certificates mounted at `/etc/letsencrypt` inside the container. To use your real Let’s Encrypt certificates on the host, the Compose file mounts a configurable path via `LETSENCRYPT_PATH`.
|
||||
|
||||
#### 1) Configure the host certificate path
|
||||
Copy `.env.example` to `.env` in the project root and adjust the path for your environment:
|
||||
|
||||
```
|
||||
cp .env.example .env
|
||||
# Edit .env and set one of the following:
|
||||
# Linux: LETSENCRYPT_PATH=/etc/letsencrypt
|
||||
# Windows (WSL Ubuntu): LETSENCRYPT_PATH=//wsl$/Ubuntu/etc/letsencrypt
|
||||
```
|
||||
|
||||
Ensure the following files exist under the path you set:
|
||||
- `live/api.truckwash.dk/fullchain.pem`
|
||||
- `live/api.truckwash.dk/privkey.pem`
|
||||
- `live/cloud.truckwash.dk/fullchain.pem`
|
||||
- `live/cloud.truckwash.dk/privkey.pem`
|
||||
|
||||
If you don’t have certs for `cloud.truckwash.dk` locally, either comment out that TLS server block in `services/nginx/nginx.conf` or place a temporary self‑signed cert/key at the expected path.
|
||||
|
||||
#### 2) Start Nginx
|
||||
```
|
||||
docker compose up -d nginx
|
||||
```
|
||||
|
||||
Check logs:
|
||||
```
|
||||
docker compose logs -f nginx
|
||||
```
|
||||
|
||||
#### 3) Troubleshooting
|
||||
- “cannot load certificate … no such file or directory”: verify `LETSENCRYPT_PATH` and that all `live/<domain>/` files exist on the host.
|
||||
- For purely local testing without HTTPS, you may comment out the HTTPS server blocks and the HTTP→HTTPS redirect in `services/nginx/nginx.conf` and run on port 80.
|
||||
Reference in New Issue
Block a user