nginx按请求类型转发(GET/POST/PUT/DELETE等请求分别转发到不同后端地址)

1. 示例

只转发GET和POST请求

if ($request_method ~ ^(GET|POST)$ ) {
   proxy_pass http://10.10.239.31:81;
}

不转发POST请求

if ($request_method !~ ^(POST)$ ) {
   proxy_pass http://10.10.239.31:81;
}

PUT请求返回400

if ($request_method !~ ^(PUT)$ ) {
   return 400;
}

2. 完整示例

示例设计

  • nginx设置两个service
    • 80端口显示 “port 80”
    • 81端口显示“port 81”
  • 80的GET请求转发到81端口
  • 80的PUT请求被拒绝

nginx配置

# gzip设置
gzip on;
gzip_vary on;

gzip_comp_level 6;
gzip_buffers 16 8k;

gzip_min_length 1000;
gzip_proxied any;
gzip_disable "msie6";
#gzip_http_version 1.0;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

server {
    listen       80;
    server_name  web80;
    location / {
    if ($request_method ~ ^(GET)$ ) {
       proxy_pass http://10.10.239.31:81;
      }
    if ($request_method ~ ^(PUT)$ ) {
       return 400;
      }
        root   /html1;
        index  index.html index.htm;
        add_header Cache-Control no-store;
    }
}
server {
    listen       81;
    server_name  web81;
    location / {
        root   /html2;
        index  index.html index.htm;
        add_header Cache-Control no-store;
    }
}

postman验证

  • GET请求被转发
    在这里插入图片描述
  • PUT请求被拒绝
    在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值