Apache の「オプション インデックス」はローカルホストでは機能しますが、パブリック DNS 名では機能しません

Apache の「オプション インデックス」はローカルホストでは機能しますが、パブリック DNS 名では機能しません

Kubernetes クラスターと非常に基本的なコンテナーがあります。インターネット経由でアクセスしようとしていますが、タスクは非常に簡単で、ディレクトリのインデックスをリストするだけです。これが私の基本的な仮想ホスト構成です。

<VirtualHost *:80>
 Alias /docs /mnt/nfs
 <Directory /mnt/nfs>
  DAV Off
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Require all granted
 </Directory>
</VirtualHost>

kubectl port-forward オプションを使用してサービスまたはポッドを使用すると、期待どおりに動作し、ファイルが xyz.com/docs にリストされます。ただし、FQDN を介してイングレス経由でポッドにアクセスしようとすると、404 エラーが発生します。フォルダー内にある test.txt ファイルにアクセスすると、ファイルの内容は表示されますが、ポート転送オプションで動作しているようにインデックスがリストされません。つまり、ポッドにアクセスしてファイルにアクセスすることはできますが、自動インデックス モジュールを使用してリストすることはできません。同じポッドで、kubectl port-forwarding オプションを使用してインデックスをリストできます。

kind: Ingress
metadata:
  name: webdav-app
  namespace: testing1
  annotations:
    cert-manager.io/issuer: "letsencrypt-staging"
    #cert-manager.io/cluster-issuer: "letsencrypt-prod"
    traefik.ingress.kubernetes.io/router.entrypoints: websecure
    traefik.ingress.kubernetes.io/router.tls: "true"
spec:
  tls:
    - hosts:
      - webdav.xyz.com
      secretName: webdav-app-certificate
  rules:
    - host: webdav.xyz.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: webdav-app
                port:
                  number: 80

どのような助けでも大歓迎です。

ありがとう、

答え1

わかりました。私の場合の解決策は回避策でした。WebDAV フォルダ (例: xyz.com/doc) にアクセスするのと同じ方法で、「webroot」フォルダ (/var/www/html) にアクセスできることに気付きました。そこで、ルート フォルダに /var/www/html/doc というシンボリック リンクを作成し、その doc シンボリック リンクが必要な doc フォルダを指すようにしました。オプション FollowSymLinks も構成で有効にされているため、私の場合はうまくいきました。

ただし、なぜ FQDN でこのように動作するのかはまだわかりません。

関連情報