nginx 学习笔记(三) auth_request 和 access_by_lua 授权

http {
   #lua 脚本配置
   lua_package_path "/usr/local/src/nginx/conf/waf/?.lua";
   lua_shared_dict limit 10m;
   init_by_lua_file /usr/local/src/nginx/conf/waf/init.lua;
   access_by_lua_file /usr/local/src/nginx/conf/waf/waf.lua;

  # nginx 自带的授权,只支持http、https
   server {
       listen       81;
       server_name  nginx.test1.com;
       
       location /test {
         auth_request /auth;
         proxy_pass http://192.168.40.26:8080/cloud/wapi/v1.0/hello;
         
		}
		
       	location /auth {
			proxy_pass http://192.168..40.26:8080/cloud/wapi/v1.0/auth/;
			#proxy_pass_request_body off;
			#proxy_set_header Content-Length "";
			#proxy_set_header X-Original-URI $request_uri;
		}
   }

    server {
        listen       80;
        server_name  localhost;
        
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

          proxy_set_header   Host   $host;
	      proxy_set_header   Referer $http_referer;
	      proxy_set_header   Cookie $http_cookie;
	      proxy_set_header   X-Real-IP  $remote_addr;
	      proxy_set_header   X-Forwarded-For              $proxy_add_x_forwarded_for;


        #利用lua脚本鉴权,支持http、https,注意如何利用lua脚本的话,可以参考学习笔记(一),需要再http节点中配置http节点中lua 脚本配置,先访问auth方法,然后此方法response.status == 200的话,继续代理http://192.168.40.119:8888/server;

        location /test2 {
         access_by_lua 'local res = ngx.location.capture("/cloud/wapi/v1.0/auth")
			if res.status == ngx.HTTP_OK then
			return
			end
			if res.status == ngx.HTTP_FORBIDDEN then
			ngx.exit(res.status)
			end
			ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
			';
         proxy_pass http://192.168.40.119:8888/server;
		}
  
      location ~ /cloud/wapi/v1.0/(.*) {
            internal;
            proxy_pass http://192.168.40.26:8080;
         }
        

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        
    }

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Nginx中添加http_auth_request_module模块,你可以按照以下步骤操作: 1. 确认你的Nginx版本是否支持http_auth_request_module模块。你可以使用以下命令来检查: ``` nginx -V ``` 在输出结果中查找是否包含 "--with-http_auth_request_module" 字样,如果有,说明该模块已经被支持。 2. 如果你的Nginx版本不支持该模块,你需要重新编译Nginx并启用该模块。首先,下载Nginx的源代码: ``` wget http://nginx.org/download/nginx-x.x.x.tar.gz ``` (将 "x.x.x" 替换为你想要下载的版本号) 3. 解压源代码包: ``` tar -zxvf nginx-x.x.x.tar.gz ``` 4. 进入解压后的目录: ``` cd nginx-x.x.x ``` 5. 执行以下命令进行配置,确保启用了http_auth_request_module模块: ``` ./configure --with-http_auth_request_module ``` 6. 执行以下命令编译并安装Nginx: ``` make sudo make install ``` 7. 配置Nginx的配置文件(通常是位于 /etc/nginx/nginx.conf)。在合适的位置添加以下配置项: ``` location / { auth_request /auth; ... } location = /auth { internal; proxy_pass http://auth_backend; ... } ``` 这里的 "/auth" 是用来处理认证请求的URL,你可以根据需要进行修改。"http://auth_backend" 是实际处理认证请求的后端服务地址,也需要根据实际情况进行修改。 8. 保存并关闭配置文件后,重启Nginx服务: ``` sudo service nginx restart ``` 现在,你已经成功地添加了http_auth_request_module模块到Nginx中。你可以根据实际需求进一步配置和使用该模块来进行认证授权操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值