如何设置 nginx proxy_pass 指令,其中还将包含发送到代理主机的 HTTP 基本身份验证信息?
这是我需要代理的 URL 示例:
http://username:[email protected]/export?uuid=1234567890
最终目标是允许一台服务器显示另一台服务器(我们要代理的服务器)的文件,而无需暴露代理服务器的 URI。按照此处的 Nginx 配置,我现在的工作正确率为 90%:
http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
我只需要添加 HTTP 基本身份验证即可发送到代理服务器
答案1
我之前写过一篇文章,详情请见此处:
http://shairosenfeld.blogspot.com/2011/03/authorization-header-in-nginx-for.html
例如:
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";
}
“a2luZzppc25ha2Vk”是“king:isnaked”的 base64 编码,因此可以用于
请随意查看博客文章以了解更多详细信息。
答案2
我按照 alvosu 的答案得到了这个结果,但我必须在 base64 字符串的引号中输入单词“Basic”,所以它看起来像这样:
proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";
答案3
放
proxy_set_header Authorization "Basic USER_AND_PASS"
在哪里USER_AND_PASS = base64(user:pass)
。
答案4
删除由 nginx 转发的授权标头proxy_set_header Authorization "";
。
我配置了 nginx 来执行基本身份验证,但是Authorization
标头在指令中传递proxy_pass
,接收端无法处理令牌。
# Basic Auth
auth_basic "Private Stuff";
auth_basic_user_file /etc/nginx/.htpasswd;
location /server {
proxy_pass http://172.31.31.140:9090;
proxy_set_header Authorization "";
}
(具体到我的情况,返回了这个错误Reason: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
)