网站首页 > 技术教程 正文
nginx配置
#A配置,用于用户正常访问
upstream www.test.cn {
server 192.168.1.100:9000;
server 192.168.1.100:9000;
}
#B配置,用于灰度访问,只有111.222.1.100访问的请求才会到这个节点上
upstream www.test.cn_huidu {
server 192.168.1.100:9000;
server 192.168.1.100:9000;
}
#配置访问的域名
server {
listen 80;
server_name www.test.cn;
charset utf-8;
location ~ ^/webticket/WEB-INF/{
deny all;
}
#O通过lua匹配访问规则
location / {
#通过"content_by_lua"这个指令,可以由lua直接确定nginx响应页面的正文
content_by_lua '
#通过X-Real-IP方式将获取到的ip赋值给myIP,X-Real-IP一般只记录真实发出请求的客户端IP
myIP = ngx.req.get_headers()["X-Real-IP"]
#如果X-Real-IP方式获取的到ip不存在话,则执行下面的X-Forwarded-For方式
if myIP == nil then
#通过X-Forwarded-For方式将获取到的ip赋值给myIP,X-Forwarded-For是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中
myIP = ngx.req.get_headers()["x_forwarded_for"]
end
#如果X-Forwarded-For方式获取的到ip也不存在话,则直接使用remote_addr地址
if myIP == nil then
myIP = ngx.var.remote_addr
end
#判断上面赋值的myIP是"111.222.1.100"的话,则匹配到下面的B "www.test.cn_huidu"项
if myIP == "111.222.1.100" then
ngx.exec("@www.test.cn_huidu")
#否则请求转发到A "www.test.cn_huidu"项
else
ngx.exec("@www.test.cn")
end
';
}
#A配置对应的upstream www.test.cn项
location @www.test.cn{
proxy_pass http://www.test.cn;
proxy_connect_timeout 60s;
proxy_read_timeout 5400s;
proxy_send_timeout 5400s;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm index.jsp;
}
#B配置对应的upstream www.test.cn_huidu项
location @www.test.cn_huidu{
proxy_pass http://www.test.cn_huidu;
proxy_connect_timeout 60s;
proxy_read_timeout 5400s;
proxy_send_timeout 5400s;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm index.jsp;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
补充
X-Forwarded-For、X-Real-IP、remote_addr区别:
X-Forwarded-For:是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中。
X-Real-IP:一般只记录真实发出请求的客户端IP。
remote_addr:remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP。
欢迎关注:悬钟Mr
https://www.toutiao.com/c/user/5844231468/#mid=1634198915259405
猜你喜欢
- 2024-10-09 openresty代替nginx并使用lua扩展功能
- 2024-10-09 Redis弱事务性与Lua脚本原子性分析
- 2024-09-08 基于Nginx+lua的蓝绿发布系统(lvs与nginx)
- 2024-09-08 Go Web 框架 Gin 实践17—用 Nginx 部署 Go 应用
- 2024-09-08 一文看懂灰度发布——基于Nginx+Lua+Redis
- 2024-09-08 Lua 基础入门(lua经典详细入门教程中文pdf)
- 2024-09-08 Redis中使用Lua脚本来实现并发下的原子操作
- 2024-09-08 运维篇—基于Nginx+Lua实现的灰度发布
- 2024-09-08 Nginx+Lua+Redis实现高性能缓存数据读取
- 2024-09-08 OpenResty实战-Lua入门-Lua模块(openresty教程)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)