Nginx/Docker - ...-Direktive ist hier nicht zulässig

Nginx/Docker - ...-Direktive ist hier nicht zulässig

Ich habe ein Problem mit Nginx in meinem Docker-Projekt. Ich weiß, es gibt hier viele ähnliche Beiträge, aber keiner konnte mir helfen.

Ich verwende Nginx mit Docker und meine Website funktioniert, aber ich wollte einige Skalierungs- und Sicherheitsfunktionen hinzufügen und den geschriebenen Code hinsichtlich der Leistung verbessern. Dazu möchte ich einen HTTP-Block hinzufügen und einen Ereignisblock definieren.

Wenn ich versuche, diese hinzuzufügen, erhalte ich diese Fehlermeldung:

[emerg] 7#7: "events" directive is not allowed here in /etc/nginx/conf.d/app.conf:1

oder dies, wenn ich den Ereignisabschnitt entferne:

[emerg] 7#7: "http" directive is not allowed here in /etc/nginx/conf.d/app.conf:13

Aus irgendeinem Grund habe ich die Ordner sites-enabled und sites-available nicht im Verzeichnis /etc/nginx/. Ich weiß nicht, ob das wichtig ist.

So sieht meine app.conf-Datei jedoch aus (funktioniert problemlos):

#events {
#    worker_processes    auto;
#    worker_connections  1024;
#    worker_rlimit_nofile 2048;
#    multi_accept        on;
#    mutex_accept        on;
#    mutex_accept_delay  500ms;
#    use                 epoll;
#    epoll_events        512;
#}

#http {

   #access_log  logs/access.log   combined;
   #error_log   logs/warn.log     warn;

upstream app {
    least_conn;
    server app_2:8001;
    server app_2:443;
    server app:8000;
    server app:443;
}




server {
    listen 80;
    server_name find-your-spirits.de;
    location / {
        return 301 https://$host$request_uri;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
}
}
server {
    listen 443 ssl;
    server_name find-your-spirits.de;


    location / {
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /staticfiles/ {
        alias /app/staticfiles/;
        add_header Access-Control-Allow-Origin *;
    }



    ssl_certificate /etc/letsencrypt/live/find-your-spirits.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/find-your-spirits.de/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
#}

Wenn ich das # entferne, erhalte ich die erwähnten Fehler.

Dies ist mein Dockerfile:

FROM nginx:1.19.0

RUN rm /etc/nginx/conf.d/default.conf
COPY app.conf /etc/nginx/conf.d

Dies ist meine Docker-Compose-Datei:

version: '3'
services:
  app:
    image: django
    build:
      context: ./app
      dockerfile: Dockerfile
    env_file:
      - ./.test.env
    volumes:
      - ./app/:/app/
      - ./app/staticfiles/:/app/staticfiles
      - ./data/.htpasswd:/etc/nginx/.htpasswd
    command: gunicorn --bind 0.0.0.0:8000 --chdir /app/ Webserver.wsgi

  app_2:
    image: django
    build:
      context: ./app
      dockerfile: Dockerfile
    env_file:
      - ./.test.env
    volumes:
      - ./app/:/app/
      - ./app/staticfiles/:/app/staticfiles
      - ./data/.htpasswd:/etc/nginx/.htpasswd
    command: gunicorn --bind 0.0.0.0:8001 --chdir /app/ Webserver.wsgi

  nginx:
    image: nginx:1.19.0
    build:
      context: ./data/nginx
      dockerfile: Dockerfile
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./data/nginx:/etc/nginx/conf.d
      - ./app/staticfiles/:/app/staticfiles
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
      - ./data/.htpasswd:/etc/nginx/.htpasswd
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
  certbot:
    image: certbot/certbot
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"

  db:
    image: postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - ./.test.env
    environment:
      - POSTGRES_DB_PORT=${SQL_PORT}
      - POSTGRES_DB_HOST=${SQL_HOST}
      - POSTGRES_PASSWORD=${SQL_PASSWORD}
      - POSTGRES_USER=${SQL_USER}
      - POSTGRES_DB=${SQL_DATABASE}
    ports:
      - 5432:5432


volumes:
  postgres_data

Wenn du weitere Informationen oder den Inhalt anderer Dateien benötigst, hinterlasse einfach einen Kommentar und ich werde diese anschließend hinzufügen.

Außerdem bin ich bei Nginx ein echter Neuling. Wenn Sie also einen Fehler im Text sehen, korrigieren oder verbessern Sie ihn gerne.

verwandte Informationen