网站首页 > 精选教程 正文
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-19 3 种发布策略,解决 K8s 中快速交付应用的难题
- 2024-10-19 Nginx 一个牛X的功能,流量拷贝! nginx 流量统计
- 2024-10-19 「技术干货」Argo Rollouts argocd rollout
- 2024-10-19 zero down-time update服务的方案
- 2024-10-19 面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章
- 2024-10-19 应用拆分、解耦与灰度发布的探索与实践
- 2024-10-19 Nginx 又一牛 X 功能!流量拷贝 nginx复制转发tcp
- 2024-10-19 tke nginx 操作实例 nginxkeepalive
- 2024-10-19 高可用集群——业务分发和灰度发布
- 2024-10-19 阿里云 MSE + ZadigX ,无门槛实现云原生全链路灰度发布
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)