Docker httpd 和 htaccess - 无法打开密码文件

Docker httpd 和 htaccess - 无法打开密码文件

我遇到了一个错误,即使我进行了最近的研究,也无法解决。

文件夹结构:

-rw-r--r-- 1 root root   105 Aug  8 15:58 Dockerfile
-rw-r--r-- 1 root root 21371 Aug  8 16:05 my-httpd.conf
drwxr-xr-x 2 root root  4096 Aug  8 15:37 www

1 - 我使用一个简单的 Dockerfile 创建了一个 apache 映像

Dockerfile:

FROM httpd:2.4
WORKDIR /usr/local/apache2/htdocs
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf

命令:

docker build -t apache .

2 - 我用新镜像运行一个容器

命令:

docker run -v /MY_PATH/www/:/usr/local/apache2/htdocs/ -dit --name apache -p 80:80 apache

3 - 我想使用 htaccess 保护 www 文件夹的访问

文件夹结构:

-rwxr-xr-x 1 root root  116 Aug  8 15:37 .htaccess
-rw-r--r-- 1 root root   46 Aug  8 15:34 .htpasswd
-rwxrwxrwx 1 root root  169 Aug  7 10:52 index.html
-rw-r--r-- 1 root root  354 Aug  7 10:56 master.css
-rw-r--r-- 1 root root   26 Aug  7 10:57 robots.txt

.htaccess

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /MY_PATH/www/.htpasswd
Require valid-user

4 - 我尝试在浏览器上访问 index.html

出现连接窗口,我输入我的登录名和密码。

然后我有一个500内部服务器错误

5 - 日志显示“无法打开密码文件”

当我检查 apache 容器日志时,我发现了以下内容:

[Fri Aug 09 07:19:58.458778 2019] [authn_file:error] [pid 7:tid 140331369154304] (2)No such file or directory: [client 194.214.141.5:64325] AH01620: Could not open password file: /MY_PATH/www/.htpasswd
194.214.141.5 - user [09/Aug/2019:07:19:58 +0000] "GET / HTTP/1.1" 500 528
[Fri Aug 09 07:19:58.534805 2019] [authn_file:error] [pid 7:tid 140331135788800] (2)No such file or directory: [client 194.214.141.5:55037] AH01620: Could not open password file: /MY_PATH/www/.htpasswd, referer: http://mywebsite.com/

6 – 我需要你的帮助:)

我在 Google 上搜索了很多次,唯一找到的是关于“SELinux”的内容,如下所示:权限被拒绝:无法打开密码文件。

我不确定这里使用 Docker 的情况是否也一样。

所以如果有人能帮助我,那就太好了!:)

答案1

容器中的 Apache 不知道您的外部路径/MY_PATH/www/,您需要使用容器内部的路径:

AuthUserFile /usr/local/apache2/htdocs/.htpasswd

相关内容