我希望我能在这里找到帮助,因为我有些日子以后很少失去......
我试图将PHP应用程序放在Docker容器中。
所以我使用此图片:https://hub.docker.com/_/php/ (特别是 php:7-apache 标签)。这样我就可以在同一容器中使用PHP和Apache。
所以我的问题是,当我访问没有尾部斜杠的URL时,我错误的重定向添加了斜杠,但使用了Docker主机无法访问的容器IP地址。
示例:
正如您在此屏幕截图中所看到的,有一个自动重定向与容器的本地IP,但它无法访问:我们在Web浏览器中超时。
在这种情况下,容器IP地址为172.17.0.2
(我的容器在我的主机端口80
上发布,所以我使用localhost访问它,就像标准的docker方式一样)
我的VirtualHost非常简单:
<VirtualHost *:*>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
你对这个问题有什么想法吗?
我想我记得301
重定向是Apache的正常行为,因为mod_dir
?但为什么它使用容器本地IP?
感谢您的帮助,对不起我的英语!
答案 0 :(得分:0)
在您的虚拟主机中缺少
let prendiContenitoreGalleria = document.querySelector('.contenitore-galleria'),
prendiArticle = Array.prototype.slice.apply(document.querySelectorAll('.contenitore-galleria__article')),
contaArticle = prendiArticle.length,
prendiImmagini = Array.prototype.slice.apply(document.querySelectorAll('.contenitori__img')),
prendiFrecciaSinistra = document.querySelector('.freccia-sinistra'),
prendiFrecciaDestra = document.querySelector('.freccia-destra');
prendiContenitoreGalleria.style.width = 100 * contaArticle + '%';
for (let numeroImmagini = 0; numeroImmagini < prendiImmagini.length; numeroImmagini++) {
prendiImmagini[numeroImmagini].style.width = 100 / contaArticle + '%';
}
prendiContenitoreGalleria.insertBefore(prendiArticle[contaArticle - 1], prendiArticle[0]);
prendiContenitoreGalleria.style.marginLeft = '-' + 100 + '%';
function andareADestra () {
prendiContenitoreGalleria.style.marginLeft = '-' + 200 + '%';
prendiContenitoreGalleria.style.transitionDuration = '.7s';
prendiContenitoreGalleria.addEventListener('transitionend', function(e) {
prendiContenitoreGalleria.appendChild(prendiArticle[0]);
prendiContenitoreGalleria.style.marginLeft = '-' + 100 + '%';
}, false);
}
function andareASinistra () {
prendiContenitoreGalleria.style.marginLeft = 0;
prendiContenitoreGalleria.style.transitionDuration = '.7s';
prendiContenitoreGalleria.addEventListener('transitionend', function(e) {
prendiContenitoreGalleria.insertBefore(prendiArticle[contaArticle - 1], prendiArticle[0]);
prendiContenitoreGalleria.style.marginLeft = '-' + 100 + '%';
}, false);
}
prendiFrecciaSinistra.addEventListener('click', function () {
andareASinistra();
});
prendiFrecciaDestra.addEventListener('click', function () {
andareADestra();
});
如果缺少它,Apache将尝试确定主机名本身并使用IP代替。由于它在docker容器下运行,因此IP将类似ServerName localhost
,无法通过浏览器访问。
这就是为什么需要添加172.17.0.2
的原因,这样当apache必须发送重定向请求时,它可以创建该重定向的正确URL