将mod_rewrite添加到Docker映像httpd:alpine
老实说,我几乎没有使用Alpine Linux的经验,但我喜欢它的方法,因此想改变这一点。我对Docker也比较陌生,所以如果这是一个“愚蠢”的问题,请容忍我 我想要实现的是在将mod_rewrite添加到Docker映像httpd:alpine,docker,mod-rewrite,apache2,alpine,apache2-module,Docker,Mod Rewrite,Apache2,Alpine,Apache2 Module,老实说,我几乎没有使用Alpine Linux的经验,但我喜欢它的方法,因此想改变这一点。我对Docker也比较陌生,所以如果这是一个“愚蠢”的问题,请容忍我 我想要实现的是在httpd:alpine图像的基础上,扩展httpd以满足我的需要 这将包括激活mod_重写模块并将自定义的.htaccess复制到映像中 以下是我到目前为止的情况: FROM httpd:alpine # Copy .htaccess into DocumentRoot COPY ./.htaccess /var/ww
httpd:alpine
图像的基础上,扩展httpd以满足我的需要
这将包括激活mod_重写模块并将自定义的.htaccess复制到映像中
以下是我到目前为止的情况:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN apk update
RUN apk upgrade
RUN apk add apache2-utils
RUN a2enmod rewrite
RUN rc-service apache2 restart
我现在的问题是,我经常收到一个“a2enmod not found”错误,我不知道如何解决。这可能是因为a2enmod是一个纯Debian/Ubuntu/。。。但我不知道激活mod_rewrite(或任何模块)的其他方法
非常感谢大家的支持
mod_rewrite
默认情况下随apache一起安装在alpine中,因此无需再次安装。下面是如何在Alpine中启用mod_rewrite
:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf
RUN { \
echo 'IncludeOptional conf.d/*.conf'; \
} >> /usr/local/apache2/conf/httpd.conf \
&& mkdir /usr/local/apache2/conf.d
我想您希望有一个工作的.htaccess重写机制。 要做到这一点,您需要做两件事:
- 在httpd.conf中,通过取消注释行启用mod_重写: LoadModule rewrite\u module modules/mod\u rewrite.so
- 在httpd.conf中,将工作目录的AllowOverride更改为All(不要更改每个AllowOverride,因为这是安全问题) 允许覆盖所有内容
- 提取httpd.conf docker run--rm-httpd:2.4 cat/usr/local/apache2/conf/httpd.conf>my-httpd.conf
- 上传新的httpd.confon构建过程: 复制。/my-httpd.conf/usr/local/apache2/conf/httpd.conf
Options+FollowSymLinks
RewriteEngine on
RewriteRule^(.*)$https://www.youtube.com [R=301,L]
(是的,我想从现在起将对我服务器的呼叫转发到youtube。)@阿奇瓦尔:这篇文章没有解决你的问题,因为我看到它对你不起作用。请不要将其标记为正确答案。@DockerFile上面的Archivar yes不适用于我。请不要将其标记为正确。也许在2018年4月,一切都起了作用,也许从那时起事情发生了变化,也许你不应该只是简单地复制和粘贴,甚至不尝试理解正在发生的事情——但也许答案只是错了。lolthis帮助了我,我同意在运行a2enmod时重写dockerfile并成功。