我正在尝试将nginx设置为使用基本身份验证进行身份验证的几个IIS Web服务器之前的反向rpoxy服务器。
(注意 - 这与nginx providing the auth using a password file不同 - 它应该只是在浏览器/服务器之间进行marshelling everythnig)
它的工作类型 - 但是会反复提示页面上每个资源(图像/ css等)的auth。
upstream my_iis_server {
server 192.168.1.10;
}
server {
listen 1.1.1.1:80;
server_name www.example.com;
## send request back to my iis server ##
location / {
proxy_pass http://my_iis_server;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass_header Authorization;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
答案 0 :(得分:5)
这种确切的情况让我想起了,但OSS就像我猜的那样。这篇文章已经有一年了,所以也许原版海报想出来了,还是放弃了?
无论如何,对我来说问题至少是由一些事情造成的:
在此之后,我终于通过Nginx推动了Sharepoint 2010。
感谢stackoverflow。
server {
listen 80;
server_name your.site.com;
location / {
proxy_http_version 1.1;
proxy_pass_request_headers on;
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_header Authorization; //This didnt work for me
more_set_input_headers 'Authorization: $http_authorization';
proxy_set_header Accept-Encoding "";
proxy_pass https://sharepoint/;
proxy_redirect default;
#This is what worked for me, but you need the headers-more mod
more_set_headers -s 401 'WWW-Authenticate: Basic realm="intranet.example.com"';
}
}
答案 1 :(得分:0)
我有与nginx / 1.10.3相同的症状。我有一个基本身份验证保护的服务,nginx作为客户端和服务器之间的反向代理。要求是nginx将通过授权。
对服务器的第一个请求确实通过了Authorization标头。第二个请求只是阻止了这个标头,这意味着客户端只能在每个会话中发出一个请求。
这与饼干有某种关系。如果我清除了浏览器cookie,则循环重复。客户端能够进行身份验证,但仅针对第一个请求。关闭浏览器会产生同样的效果。
我的解决方案是使用以下方法将上游服务器从https更改为http:
proxy_pass http://$upstream;
而不是:
proxy_pass https://$upstream;