nginx位置指令:认证发生在错误的位置块?

时间:2011-11-07 00:17:13

标签: authentication configuration proxy nginx location

我很沮丧。

我有一台主要在ssl上运行couchdb的服务器(使用nginx来代理ssl连接),但也必须提供一些apache的东西。

基本上我希望所有不能启动/ www的东西都被发送到couchdb后端。如果URL已启动/ www,则应将其映射到端口8080上的本地apache服务器。

我的配置工作,但我也会在/ www路径上提示我进行身份验证。我比nginx更习惯于配置Apache,所以我怀疑我错误地理解了一些东西,但如果有人能从我的配置中看到错误(下面),我将非常感激。

澄清我的使用场景;

    应该代理
  1. https://my-domain.com/www/script.cgi http://localhost:8080/script.cgi
  2. 应该代理
  3. https://my-domain.com/anythingelse http://localhost:5984/anythingelse
  4. 只有第二个应该要求身份验证。这是导致问题的身份验证问题 - 正如我所提到的,我也在https://my-domain.com/www/anything受到挑战: - (

    这是配置,感谢任何见解。

    server {
            listen   443;
            ssl on;
    
            # Any url starting /www needs to be mapped to the root
            # of the back end application server on 8080
    
            location ^~ /www/ {
            proxy_pass http://localhost:8080/;
            proxy_redirect 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;
    
            }
    
            # Everything else has to be sent to the couchdb server running on
            # port 5984 and for security, this is protected with auth_basic
            # authentication.
    
            location / {
    
            auth_basic "Restricted";
            auth_basic_user_file /path-to-passwords;
    
            proxy_pass http://localhost:5984;
            proxy_redirect 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;
            proxy_set_header X-Forwarded-Ssl on;
    
            }
        }
    

1 个答案:

答案 0 :(得分:0)

Maxim通过提及访问favicon的浏览器会触发此行为并且配置在其他方面是正确的来帮助我回答这个问题。