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请求被转发
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fa6589aa5efb4d3a78a0a36bafffbcf1.png)
- PUT请求被拒绝
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/71cc981f82bb56ae6d621aa3de5559bc.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8d08e4f567b5bd5c68c61f0e8eb7bf01.png#pic_center)