# openbridge/nginx architecture

> Architecture diagram of the GitHub repository openbridge/nginx, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/openbridge/nginx
- Repository: https://github.com/openbridge/nginx

## Overview

This repository packages an opinionated NGINX server configuration for serving HTML and PHP applications. The documented request path covers virtual-host handling, security and access controls, caching, and delivery either from mounted site content or configured upstreams. The README also describes TLS, compression, SEO/redirects, GeoIP, CDN support, cache purging, and monitoring. The tree contains the PHP configuration variant; HTML and other variants mentioned in the README are not present, and no source excerpts were available, so links are limited to documented configuration relationships.

Main entry points: [`conf/php/nginx/nginx.conf`](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/nginx.conf) (NGINX configuration), [`conf/php/nginx/conf.d/location.conf`](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/location.conf) (Request routing), [`conf/php/nginx/sites-available/default.vhost`](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/sites-available/default.vhost) (Virtual host), [`conf/php/nginx/redis.d/cache.conf`](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/redis.d/cache.conf) (Redis cache config)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_request["Request handling"]
  node_nginx["NGINX configuration<br/>[nginx.conf]"]
  node_vhost["Virtual host<br/>[default.vhost]"]
  node_routing["Request routing<br/>[location.conf]"]
  node_headers["Response headers<br/>[httpd.conf]"]
  node_tls["TLS settings<br/>[ssl.conf]"]
  node_seo["SEO and redirects<br/>[seo.conf]"]
end

subgraph group_delivery["Delivery and caching"]
  node_compression["Compression<br/>[gzip.conf]"]
  node_cachemaps["Cache maps<br/>[cache]"]
  node_redisconf["Redis cache config<br/>[cache.conf]"]
  node_proxyconf["Proxy upstream config<br/>[proxy.conf]"]
  node_fastcgi["FastCGI config<br/>[fastcgi.conf]"]
  node_phpupstream["PHP-FPM upstream<br/>[php-fpm.conf]"]
end

subgraph group_protection["Security controls"]
  node_access["Access controls<br/>[secure.conf]"]
  node_geo["GeoIP and limits<br/>[geo.d]"]
  node_botblocker["Bot protection<br/>[bots.d]"]
  node_purge["Cache purge<br/>[purge.conf]"]
end

subgraph group_operations["Operations"]
  node_monitoring["Monitoring<br/>[monit.conf]"]
  node_status["Status endpoint<br/>[status.conf]"]
end

node_visitor(("Site visitor"))
node_redis[("Redis service")]
node_staticcontent["Mounted site content"]
node_proxybackend["Proxy backend"]
node_phpfpm["PHP-FPM service"]

node_visitor -->|"sends requests"| node_nginx
node_nginx -->|"selects host"| node_vhost
node_vhost -->|"routes requests"| node_routing
node_nginx -->|"sets headers"| node_headers
node_nginx -->|"secures traffic"| node_tls
node_nginx -->|"applies rules"| node_seo
node_nginx -->|"compresses responses"| node_compression
node_nginx -->|"uses cache maps"| node_cachemaps
node_nginx -->|"uses cache config"| node_redisconf
node_redisconf -->|"connects to"| node_redis
node_routing -->|"serves content"| node_staticcontent
node_routing -->|"proxies requests"| node_proxyconf
node_proxyconf -->|"targets upstream"| node_proxybackend
node_routing -->|"handles PHP"| node_fastcgi
node_fastcgi -->|"uses upstream"| node_phpupstream
node_phpupstream -->|"forwards FastCGI"| node_phpfpm
node_nginx -->|"enforces access"| node_access
node_nginx -->|"applies geo rules"| node_geo
node_nginx -->|"applies bot rules"| node_botblocker
node_nginx -->|"enables purging"| node_purge
node_nginx -->|"monitors processes"| node_monitoring
node_nginx -->|"exposes status"| node_status

click node_nginx "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/nginx.conf"
click node_vhost "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/sites-available/default.vhost"
click node_routing "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/location.conf"
click node_headers "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/header.d/httpd.conf"
click node_tls "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/ssl.conf"
click node_seo "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/seo.conf"
click node_compression "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/gzip.conf"
click node_cachemaps "https://github.com/openbridge/nginx/tree/master/conf/php/nginx/map.d/cache"
click node_redisconf "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/redis.d/cache.conf"
click node_proxyconf "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/upstream.d/proxy.conf"
click node_fastcgi "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/fastcgi.d/fastcgi.conf"
click node_phpupstream "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/upstream.d/php-fpm.conf"
click node_access "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/secure.conf"
click node_geo "https://github.com/openbridge/nginx/tree/master/conf/php/nginx/geo.d"
click node_botblocker "https://github.com/openbridge/nginx/tree/master/conf/php/nginx/bots.d"
click node_purge "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/purge.conf"
click node_monitoring "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/monit.conf"
click node_status "https://github.com/openbridge/nginx/blob/master/conf/php/nginx/status.d/status.conf"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_nginx,node_vhost,node_routing,node_headers,node_tls,node_seo toneBlue
class node_compression,node_cachemaps,node_redisconf,node_proxyconf,node_fastcgi,node_phpupstream,node_redis toneAmber
class node_access,node_geo,node_botblocker,node_purge toneMint
class node_monitoring,node_status toneRose
class node_visitor,node_staticcontent,node_proxybackend,node_phpfpm toneIndigo
```

## Components

### Request handling

- [NGINX configuration](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/nginx.conf): `conf/php/nginx/nginx.conf`
- [Virtual host](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/sites-available/default.vhost): `conf/php/nginx/sites-available/default.vhost`
- [Request routing](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/location.conf): `conf/php/nginx/conf.d/location.conf`
- [Response headers](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/header.d/httpd.conf): `conf/php/nginx/header.d/httpd.conf`
- [TLS settings](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/ssl.conf): `conf/php/nginx/conf.d/ssl.conf`
- [SEO and redirects](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/seo.conf): `conf/php/nginx/conf.d/seo.conf`

### Delivery and caching

- [Compression](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/gzip.conf): `conf/php/nginx/conf.d/gzip.conf`
- [Cache maps](https://github.com/openbridge/nginx/tree/master/conf/php/nginx/map.d/cache): `conf/php/nginx/map.d/cache`
- [Redis cache config](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/redis.d/cache.conf): `conf/php/nginx/redis.d/cache.conf`
- [Proxy upstream config](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/upstream.d/proxy.conf): `conf/php/nginx/upstream.d/proxy.conf`
- [FastCGI config](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/fastcgi.d/fastcgi.conf): `conf/php/nginx/fastcgi.d/fastcgi.conf`
- [PHP-FPM upstream](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/upstream.d/php-fpm.conf): `conf/php/nginx/upstream.d/php-fpm.conf`

### Security controls

- [Access controls](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/secure.conf): `conf/php/nginx/conf.d/secure.conf`
- [GeoIP and limits](https://github.com/openbridge/nginx/tree/master/conf/php/nginx/geo.d): `conf/php/nginx/geo.d`
- [Bot protection](https://github.com/openbridge/nginx/tree/master/conf/php/nginx/bots.d): `conf/php/nginx/bots.d`
- [Cache purge](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/purge.conf): `conf/php/nginx/conf.d/purge.conf`

### Operations

- [Monitoring](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/conf.d/monit.conf): `conf/php/nginx/conf.d/monit.conf`
- [Status endpoint](https://github.com/openbridge/nginx/blob/master/conf/php/nginx/status.d/status.conf): `conf/php/nginx/status.d/status.conf`

### Other components

- **Site visitor**
- **Redis service**
- **Mounted site content**
- **Proxy backend**
- **PHP-FPM service**

## Connections

- Site visitor → NGINX configuration: sends requests
- NGINX configuration → Virtual host: selects host
- Virtual host → Request routing: routes requests
- NGINX configuration → Response headers: sets headers
- NGINX configuration → TLS settings: secures traffic
- NGINX configuration → SEO and redirects: applies rules
- NGINX configuration → Compression: compresses responses
- NGINX configuration → Cache maps: uses cache maps
- NGINX configuration → Redis cache config: uses cache config
- Redis cache config → Redis service: connects to
- Request routing → Mounted site content: serves content
- Request routing → Proxy upstream config: proxies requests
- Proxy upstream config → Proxy backend: targets upstream
- Request routing → FastCGI config: handles PHP
- FastCGI config → PHP-FPM upstream: uses upstream
- PHP-FPM upstream → PHP-FPM service: forwards FastCGI
- NGINX configuration → Access controls: enforces access
- NGINX configuration → GeoIP and limits: applies geo rules
- NGINX configuration → Bot protection: applies bot rules
- NGINX configuration → Cache purge: enables purging
- NGINX configuration → Monitoring: monitors processes
- NGINX configuration → Status endpoint: exposes status
