0%

Nginx basic auth 认证

创建密码

# 创建一个test用户,终端输入密码,然后保存到pwd文件中
htpasswd -c pwd test
# 可以cat pwd 看看密码
test:$apr1$XV.xFTZA$Gvuw/g8TAYYS6Nm5c7w5Q1
# 可以向这个文件继续添加用户test2,密码sss
htpasswd -b pwd test2 sss

nginx.conf

将上面生成的文件 pwd 放到 /etc/nginx/pwd目录下,并在 nginx.conf 指定位置.

server {
        listen    80 default_server;
        server_name _;
        location / {
            auth_basic "you need login";
            auth_basic_user_file /etc/nginx/pwd; 
            proxy_pass   http://xxxx:222;
            # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
            proxy_http_version 1.1;
            # Remove the Connection header if the client sends it,
            # it could be "close" to close a keepalive connection
            proxy_set_header Connection ""; 
      }
    }

注意proxy_http_version 1.1proxy_set_header Connection ""配置对于SSE这种需要保持长连接的接口很重要,一定要添加不然无数据返回. proxy_http_version指定版本,proxy_set_header设置Connection为空.

curl测试

# 第一种方式, -u 指定用户名密码
curl -u "test2:sss"   http://172.16.20.91:38750/sse/test

# 第二种,将用户名密码base64加密后添加到header
echo -n "test2:sss" | base64
curl -H "Authorization:Basic base64加密后的字符串" http://127.0.0.1:38750/test