# Webserver mit nginx

Um einen nginx Webserver Container einzubinden, sind folgende Schritte durchzuführen:

- Anlegen des Verzeichnis ***/opt/containers/nginx***
- Anlegen des Verzeichnis ***/opt/containers/nginx/html***

```
sudo mkdir -p /opt/containers/nginx/html
```

Für den Containerstart ist die Datei ***/opt/containers/nginx/docker-compose.yml*** mit folgendem Inhalt anzulegen:

```bash
#
# /opt/containers/nginx/docker-compose.yml
# Startet einen nginx Webserver
#
version: '3'
services:
  nginx:
    image: nginx:latest
    container_name: nginx
    restart: unless-stopped
    networks:
      - proxy
    volumes:
      - ./html:/usr/share/nginx/html
    labels:
      - "traefik.enable=true"
      - "traefik.http.middlewares.redirect2www.redirectregex.regex=^https://die-steffens.eu/(.*)"
      - "traefik.http.middlewares.redirect2www.redirectregex.replacement=https://www.die-steffens.eu/$${1}"
      - "traefik.http.routers.nginx-www.entrypoints=https"
      - "traefik.http.routers.nginx-www.rule=Host(`www.die-steffens.eu`,`die-steffens.eu`)"
      - "traefik.http.routers.nginx-www.tls=true"
      - "traefik.http.routers.nginx-www.tls.certresolver=http"
      - "traefik.http.routers.nginx-www.service=nginx"
      - "traefik.http.routers.nginx-www.middlewares=redirect2www,secHeaders@file"
      - "traefik.http.services.nginx.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"
networks:
  proxy:
    external: true
```

Der Webserver kann über das unsichere Port 80 Protokoll http oder das sichere Port 443 Protokoll https angesprochen werden. In ersterem Fall wird auf das sichere https Protokoll umgelenkt.

Gestartet und gestoppt wird wie üblich mit:  
`/opt/containers/bookstack/docker compose -f /opt/containers/nginx/docker-compose.yml up -d`  
`/opt/containers/bookstack/docker compose -f /opt/containers/nginx/docker-compose.yml down`