http_auth_request php 设置用户名

http_auth_request php 设置用户名

我正在尝试在 nginx 中为所有服务设置单一身份验证。我已经让它工作了basic_auth,现在我尝试让它工作,auth_request它几乎正常工作,唯一的问题是我必须以某种方式在 nginx 中设置用户名,因为 gerrit 使用它来知道哪个用户已经过身份验证。

php 脚本的工作原理auth_request /action/check.php;是,如果用户通过身份验证,则返回 202,如果未通过身份验证,则返回 401,然后将您带到登录页面。不起作用的部分是 header Authorization。由于它是空的,gerrit 不知道哪个用户通过了身份验证,因此会引发错误。我需要做的是在 header 中check.php设置$http_authorizationnginx 使用的变量。

server {
        listen 80 default_server;
        listen [::]:80 default_server;


        root /srv/proxy;

        index index.html index.php;

        server_name 192.168.1.107;

        location /gerrit/login/ {
                auth_request /action/check.php;
                error_page 401 = /;
                proxy_pass              http://127.0.0.1:8080;
                proxy_set_header        X-Forwarded_For         $remote_addr;
                proxy_set_header        Host                    $host;
                #auth_basic             "Gerrit";
                #auth_basic_user_file   /srv/.htpassword;
                proxy_set_header        Authorization           $http_authorization;
                proxy_pass_header       Authorization;
        }
        location /gerrit/ {
                auth_request /action/check.php;
                error_page 401 = /;
                proxy_pass              http://127.0.0.1:8080;
                proxy_set_header        X-Forwarded_For         $remote_addr;
                #proxy_set_header        Host                    $host;
                #auth_basic              "Gerrit";
                proxy_set_header        Authorization           $http_authorization;
                proxy_pass_header       Authorization;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php5-fpm.sock;
        } 

        location / {
                try_files $uri $uri/ =404;
        }
}

相关内容