![apache“选项索引”在本地主机上运行,但不使用公共 DNS 名称](https://linux22.com/image/785376/apache%E2%80%9C%E9%80%89%E9%A1%B9%E7%B4%A2%E5%BC%95%E2%80%9D%E5%9C%A8%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%8C%E2%80%8B%E2%80%8B%E4%BD%86%E4%B8%8D%E4%BD%BF%E7%94%A8%E5%85%AC%E5%85%B1%20DNS%20%E5%90%8D%E7%A7%B0.png)
我有一个 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 选项的服务或 pod 时,它会按预期工作,并且我的文件会列在 xyz.com/docs 中。但是,当我尝试通过我的 FQDN 通过入口访问 pod 时,它会给我一个 404 错误。当我访问文件夹内的 test.txt 文件时,我可以看到文件的内容,但它没有列出索引,就像使用端口转发选项一样。简而言之,我可以访问 pod 并访问文件,但无法使用自动索引模块列出它们,并且使用同一个 pod,我能够使用 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
好吧,对我来说,解决方案是一种变通方法。我注意到“webroot”文件夹 (/var/www/html) 可以像访问 WebDAV 文件夹 (例如 xyz.com/doc) 一样进行访问。因此,我在根文件夹中创建了一个符号链接,即 /var/www/html/doc,doc 符号链接指向所需的 doc 文件夹。配置中还启用了 FollowSymLinks 选项,这允许它为我工作。
但是,我仍然不确定为什么它以这种方式与 FQDN 一起工作。