NGINX LUA實現複雜的控制

2021-09-08 20:06:28 字數 2416 閱讀 7462

lua_nginx_module 可以一步步的安裝,也可以直接用**的openresty

centos和debian的安裝就簡單了。。

這裡說下freebsd的安裝:

fetch 

tar zxvf lua-5.1.4.tar.gz

cd lua-5.1.4

make freebsd

make install

cd ..

fetch

fetch

tar zxvf v0.1.6rc2

mv chaoslawful-lua-nginx-module-ccaf132 lua_nginx_module

tar zxvf v0.2.17rc2

mv simpl-ngx_devel_kit-bc97eea ngx_devel_kit

tar zxvf pcre-8.12.tar.gz

tar zxvf nginx-1.0.3.tar.gz

cd nginx-1.0.3

./configure --prefix=/data/soft/nginx --with-pcre=../pcre-8.12 --add-module=../ngx_devel_kit --add-module=../lua_nginx_module

make && make install

安裝完成後,我們體驗一下lua

ngx.say 是列印的列印輸出的意思。。。

location /echo 

location /lua

location @client

location ~ /test

控制經過判斷之後,才能訪問

location /
這個是先判斷 check-pam介面的return的內容是不是spam,是的話,轉跳到其他的頁面

location /
location /
redirect的使用

return ngx.redirect("/foo", 301)返回302臨時重定向 位址列會顯示跳轉後的位址

rewrite ^ /foo? redirect;  # nginx config

return ngx.redirect('/foo'); -- lua code

location = /test
乙個lua的例子:

#!/usr/bin/env lua

ngx.say('aaaaaa

')local url = ngx.var.uri

ngx.say('

',url,'

')ngx.print('這次訪問的header頭是 ',ngx.req.raw_header())

ngx.print('')

ngx.print('')

ngx.print('這次訪問的是 get 還是 post 呀 ',ngx.req.get_method())

}}

改改密碼就能用啦~

location = /adder
ngx.req.set_uri

nginx裡面的配置是:

location /test
lua裡面的配置是:

location /test
我想大家看這個對照,已經知道是啥意思了.

通過lua獲取nginx的內建變數,通過這些變數做些邏輯的處理~

nginx提供了很多內建的變數,如:

另外: http_x_forwarded_for是透過**伺服器取得客戶端的真實ip位址,有些用此方法讀取到的仍然是**伺服器的ip。還有一點需要注意的是:如果客戶端沒有通過**伺服器來訪問,那麼用 http_x_forwarded_for 取到的值將是空的。

location /lua1 

# 請求另外的url

location /lua2

nginx lua實現登陸驗證

用於在多台伺服器上單點登入sso 無session,使用者身份的驗證。1 安裝lua yum install readline.x86 64 readline devel.x86 64 wget make linux make install 注意 不要使用5.2版本,5.2版本的lua和nginx...

Nginx lua 實現呼叫 so檔案

本文給大家分享的是nginx結合lua 實現呼叫.so動態鏈結庫檔案的方法和示例,有需要的小夥伴可以參考下 最近在和智慧型硬體部門一起,做乙個室內定位的服務,該服務根據手機端傳過來的beacon裝置列表,根據一定的演算法計算出具體的商場,並將商場id和beason裝置列表作為引數,呼叫.so檔案中的...

基於Nginx Lua實現的Token鑑權認證

管理員要發布乙個公告,在前台傳送post請求,攜帶需要發布的json資料,呼叫後台api服務,通過需要發布的資料,利用freemaker模板,生成乙個靜態頁,儲存到伺服器指定目錄。所以,乙個靜態頁面,無論非登入使用者還是已登入但是沒有授予檢視該稿件許可權的使用者,頁面能夠做的是利用js判斷他們的使用...