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请求被拒绝
    在这里插入图片描述

在这里插入图片描述

posted on   运维开发玄德公  阅读(842)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示