我正在尝试在运行 Foreman 时通过 http(80) 提供目录列表。我尝试编辑 /etc/httpd/conf.d 中的 05-foreman.conf 和 15-default.conf 文件,以便允许通过 /usr/share/foreman/public 目录提供目录列表,但每次访问该页面时,我都会收到来自 Foreman/Passenger 的“您正在寻找的页面不存在”消息。我尝试访问的目录是这样的符号链接:
/usr/share/foreman/public/directory => /var/www/html/directory
我可以访问我试图访问的目录中的静态文本文件,但我看不到索引。我已在该区域发送了 FollowSymLinks 和索引,但这对我没有任何帮助。
<Directory "/usr/share/foreman/public">
Options FollowSymLinks Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
我是否遗漏了某些内容,或者缺少了其他我应该编辑的文件?
答案1
我认为你缺少 apache 别名指令
Alias /foreman /usr/share/foreman/public
<Directory "/usr/share/foreman/public">
Options FollowSymLinks Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
之后重新加载 apache 服务或重新启动它,或者如果你正在运行 foreman 和 Passenger,你需要有类似这样的内容
Listen 443
<VirtualHost *:443>
ServerName foreman.foo.bar
ServerAlias foreman
DocumentRoot /usr/local/share/foreman/public
PassengerAppRoot /usr/local/share/foreman
SSLEngine On
SSLVerifyClient optional
SSLOptions +StdEnvVars
SSLVerifyDepth 3
SSLCertificateFile /etc/pki/foreman/foreman.foo.bar.cert
SSLCertificateKeyFile /etc/pki/foreman/foreman.foo.bar.key
SSLCACertificateFile /var/puppet/ssl/ca/ca_crt.pem
<Directory /usr/local/share/foreman/public>
Options FollowSymLinks
DirectoryIndex index.html
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
答案2
经过一段时间的斗争,我最终将 /etc/httpd/conf.d/05-foreman.conf 移至 /etc/httpd/conf.d/05-foreman.conf-noload,以阻止 httpd 服务在端口 80 上启动 foreman。
无论如何,我总是通过 443 访问 Web 应用程序。似乎没有出现任何问题。这似乎将目录列表返回到端口 80,因此我实际上可以使用我放在那里的结构。
也许不是最佳选择,但这让我达到了我需要的效果。谢谢!!