프록시 호스트로 전송되는 HTTP 기본 인증 정보도 포함하는 nginx proxy_pass 지시문을 어떻게 설정합니까?
이것은 내가 프록시 해야하는 URL의 예입니다.
http://username:password@192.168.0.5/export?uuid=1234567890
최종 목표는 프록시 서버의 URI를 노출시키지 않고 하나의 서버가 다른 서버 (프록시하려는 서버)에서 파일을 제공하는 것입니다. 여기에서 찾은 Nginx 구성을 따라이 작업을 90 % 올바르게 수행했습니다.
http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
프록시 서버로 보내려면 HTTP 기본 인증을 추가하면됩니다.
답변
나는 얼마 전에 이것에 대해 글을 썼다. 자세한 내용은 여기를 참조하십시오.
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로 인코딩되어 있으므로
http : // king : isnaked@6.6.6.6
자세한 내용은 블로그 게시물을 확인하십시오.
답변
나는 alvosu의 대답 으로이 작업을했지만 base64 문자열의 인용 부호 안에 “Basic”이라는 단어를 입력해야하므로 다음과 같이 보입니다.
proxy_set_header Authorization "Basic dGVzdHN0cmluZw==";
답변
proxy_set_header 권한 부여 “USER_AND_PASS”를 설정하십시오. 여기서 USER_AND_PASS = base64 (user : pass)
답변
과의 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
)