openresty代理配置
创始人
2025-05-28 06:56:45
0

文章目录

      • 1 openresty反向代理http连接
      • 2 openresty反向代理tcp连接
      • 3 openresty配置https
      • 4 openresty监听redis值,根据值的不同代理到不同后端
      • 5 openresty检测请求的header值,proxy到不同的后端地址

1 openresty反向代理http连接

server {listen       80;server_name  www.123.com;location / {proxy_pass http://127.0.0.1:8080;index  index.html index.htm index.jsp;}
}

2 openresty反向代理tcp连接

# 添加如下字段即可
stream {upstream austin {server x.x.x.x:1888;}server {listen       8888;proxy_connect_timeout 10s;proxy_timeout 6s;proxy_pass   austin;}
}

3 openresty配置https

生成CA

# 自签证书 - 生成CA(ca.key)
openssl genrsa -des3 -out ca.key 2048 
# 生成CA证书签名请求(ca.csr)
openssl req -new -key ca.key -out ca.csr
# 生成自签名CA证书(ca.cert)
openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt

生成server证书

# 生成服务端私钥(server.key)
openssl genrsa -des3 -out server.key 2048 
# 生成服务端证书签名请求(server.csr)
openssl req -new -key server.key -out server.csr
# 使用ca证书签署服务端csr以生成服务端证书(server.cert)
openssl ca -days 3650 -in server.csr -out server.crt -cert ca.crt -keyfile ca.key 

生成client证书

# 生成客户端私钥(client.key)
openssl genrsa -des3 -out client.key 2048
# 生成客户端证书签名请求(client.csr)
openssl req -new -key client.key -out client.csr
# 使用ca证书签署客户端csr以生成客户端证书(client.cert)
openssl ca -days 3650 -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

openresty配置(这里用的server证书方便测试)

server {listen 443 ssl http2 default_server;server_name www.rsq.com;ssl_certificate  /etc/pki/ssl/server.crt;ssl_certificate_key /etc/pki/ssl/server.key;location / {proxy_pass  http://192.168.189.128;}
}

4 openresty监听redis值,根据值的不同代理到不同后端

需要通过lua脚本实现

    location / {set $backend "172.16.100.33:9090/hello-rsq";access_by_lua_block {local redis = require "resty.redis"local red = redis:new()local ok, err = red:connect("172.16.100.1", 6379) # redis地址if not ok thenngx.log(ngx.ERR, "failed to connect to Redis: ", err)return ngx.exit(500)endlocal res, err = red:get("server")if not res thenngx.log(ngx.ERR, "failed to get value from Redis: ", err)return ngx.exit(500)end# 判断redis中server对应的值,根据值的不同的代理到不同的后端if res == "172.16.100.33:9090/hello-rsq" thenngx.var.backend = "172.16.100.33:9090/hello-rsq"elseif res == "172.16.100.33:9090/hello-zk" thenngx.var.backend = "172.16.100.33:9090/hello-zk"endred:set_keepalive(10000, 100)}proxy_pass http://$backend;}

5 openresty检测请求的header值,proxy到不同的后端地址

可以使用ngx.req.get_headers()函数获取请求头部信息。然后可以使用Lua语言的条件判断来判断请求头中的值,并根据判断结果选择要代理的后端地址。

以下是一个示例代码,它检查请求头中的User-Agent值,并根据不同的值代理到不同的后端地址:

location /api {set $backend "172.16.100.33:9090/hello-rsq";access_by_lua_block {local headers = ngx.req.get_headers()if headers["User-Agent"] == "Android" thenngx.var.backend = "172.16.100.33:9090/hello-zk"elseif headers["User-Agent"] == "iPhone" thenngx.var.backend = "172.16.100.33:9090/hello-rsq"elsengx.var.backend = "172.16.100.33:9090/hello-rsq"end}proxy_pass http://$backend;
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...