如何让nginx正确代理(包括在头文件中设置的基本authentication)Apache?

编辑:如果您有关于如何改进问题或缺less哪些细节的想法,请留下评论。

预期结果:

我试图将nginx作为反向代理来部署,让我公开由Apache提供的文件,而不必提供Apache所需的基本authentication凭证。 我的计划是在从代理发送到Apache的头文件中“静态地”提供基本的authentication凭证,以便用户可以在没有(或看到/知道)凭证的情况下访问这些文件。

build立:

Apache需要通过https进行基本身份validation。 要部署的反向代理服务器本身是由一个处理到(docker)主机的传入stream量的nginx代理的。 (docker)主机入口nginx只在443上监听,(docker)主机上/内的stream量是http。

所以设置是:

https >> [dockerhost ingress nginx] >> http >> [nginx reverse proxy] >> https >> [apache file server (basic auth)] 

我正在使用最新的nginx docker镜像,只是添加了conf。 对于dockerhost入口代理,我使用https://github.com/jwilder/nginx-proxy 。 Apache正在从Hetzner存储箱提供文件。 我看不到或改变它的configuration,Hetzner说他们不能帮助我,因为他们没有正式支持这种设置。 他们最后的答复是:

我们的Apache不需要任何特定的头文件。 所有必要的是通过正确的主机名(由于SNI)和通过端口443处的SLL / HTTPS获得正确的凭证的请求。

问题:

直接地,没有nginx代理,我可以在浏览器中通过基本的身份validation提示或通过curl访问Apache上的文件。

当我尝试通过代理访问这些文件,并试图在nginxconfiguration中将“静态”的信息传递给头部时,我只能从404获得404s。

但是,我可以(而且这使我)通过代理访问文件时,代理没有“静态”基本身份validation,只是提示我的凭据。

所以它似乎是通过基本身份validation,但不能访问任何文件,这使我竹编。

我试过的:

我最初的方法是在这里使用 @Shai提供的位置块进行滚动: 如何使用nginx代理需要身份validation的主机?

 location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://6.6.6.6:80; proxy_set_header Authorization "Basic a2luZzppc25ha2Vk"; } 

但是这产生了上述的行为。 从那时起,我开始试验注释和添加不同的指令(例如: 如何让nginx将HTTP_AUTHORIZATION头传给Apache ),但是无济于事。

我很感激任何指针。

干杯,威尔