하위 디렉터리 경로에 도킹된 linuxserver/dokuwiki에 대한 Nginx 규칙

하위 디렉터리 경로에 도킹된 linuxserver/dokuwiki에 대한 Nginx 규칙

/dokuwiki를 입력하여 컨테이너에 액세스할 수 있지만 리소스와 링크가 모두 엉망입니다. 내가 지금까지 본 것

dokuwiki 컨테이너에 PHP가 포함되어 있기 때문에 nginx 구성에 무엇을 추가해야 할지 잘 모르겠습니다. 며칠간 다양한 구성으로 작동시키려고 노력했지만 재미가 없었습니다. 어쨌든 관련 세부 사항은 아래에 있으니 시간 내주셔서 감사합니다.

# Contents of nginx/nginx.conf

    user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;


    upstream docker-adguard-home {
      server adguard-home;
    }

    upstream docker-airsonic {
      server airsonic:4040;
    }

    upstream docker-dokuwiki {
      server dokuwiki;
    }

현재 home.conf에 모든 서비스가 있으며 일단 모든 서비스가 작동하고 강화되면 분할할 계획입니다.

# contents of nginx/conf/home.conf 
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        auth_basic           "Authorized users only";
        auth_basic_user_file /etc/apache2/.htpasswd;


        server_name mydomain.ddns.org 192.168.0.22;

        location /media {
                root /var/www/;
                autoindex               on;
        }

        location /adguard/ {
                proxy_cookie_path / /adguard/;
                proxy_redirect /login.html /adguard/login.html;
                proxy_pass http://docker-adguard-home/;

        }

        location /airsonic {
                proxy_set_header X-Real-IP          $remote_addr;
                proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Host   $http_host;
                proxy_set_header Host               $http_host;
                proxy_set_header X-Forwarded-Server $host;
                proxy_max_temp_file_size            0;
                proxy_pass http://docker-airsonic;
                add_header X-Content-Type-Options "nosniff";
                add_header X-Frame-Options SAMEORIGIN;
                add_header X-XSS-Protection "1; mode=block";
                add_header X-Robots-Tag none;
        }

        location /dokuwiki/ {
                proxy_pass http://docker-dokuwiki/;
        }


        location / {
                root /var/www/html/;
                index index.html

                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

}

누군가 복사하려는 경우를 대비해 Docker 작성

version: '3'
services:
  nginx: 
    image: nginx:1.17-alpine
    container_name: nginx
    restart: always
    volumes:
       - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
       - ./nginx/conf/:/etc/nginx/conf.d/:ro
       - ./nginx/htpasswd:/etc/apache2/.htpasswd:ro
       - ./log/nginx/:/var/log/nginx/
       - ./www/html/:/var/www/html/:ro
       - ./content/Music:/var/www/media/Music:ro
    ports:
      - 80:80
      - 443:443
    networks:
      - reverse-proxy

  adguard-home:
    image: adguard/adguardhome
    container_name: adguard-home
    restart: always    
    volumes:
      - ./adguard/work:/opt/adguardhome/work
      - ./adguard/config:/opt/adguardhome/conf
    ports:
      - 53:53
      - 53:53/udp
    networks:
      - reverse-proxy
    expose:
     - 80

  airsonic:
    image: linuxserver/airsonic
    container_name: airsonic
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Dublin
      - CONTEXT_PATH=/airsonic #optional
      - JAVA_OPTS=-Dserver.use-forward-headers=true
    volumes:
      - ./airsonic/config:/config
      - ./content/Music:/music:ro
      - ./airsonic/playlists:/playlists
      - ./airsonic/podcasts:/podcasts
    restart: unless-stopped
    expose:
      - 4040
    networks:
      - reverse-proxy

  dokuwiki:
    image: linuxserver/dokuwiki
    container_name: dokuwiki
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Dublin
        #- APP_URL=/dokuwiki #optional
    volumes:
      - /dokuwiki:/config
    networks:
      - reverse-proxy
    expose:
      - 80
    restart: unless-stopped

networks:
  reverse-proxy:
    driver: bridge

답변1

이 글을 읽는 모든 분들을 위해. 결국 Llanetto를 선택했습니다. 마크다운을 렌더링할 뭔가가 필요합니다. 내 문제가 PHP와 관련된 것이라고 의심했지만 더 이상 문제가 되지 않습니다. PHP가 없는 플랫 파일 위키를 찾고 있다면 확인해 보세요.

관련 정보