概述
在工作中遇到了根据post请求做转发的需求,决定使用nginx来完成。
1.源码安装nginx,带上form-input-nginx模块
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
cd nginx-1.16.0/
git clone http://github.com/simpl/ngx_devel_kit.git
git clone http://github.com/calio/form-input-nginx-module.git
./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=user00 --group=user00 --with-http_stub_status_module --with-http_ssl_module --with-pcre --add-module=ngx_devel_kit --add-module=form-input-nginx-module
make
make install
2.默认配置启动nginx,测试正常
cd /usr/local/nginx/sbin/
./nginx
ps -ef |grep nginx
3.修改配置,完成转发功能
user user00;
worker_processes 4;
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#定义日志格式
log_format main escape=json '{ "@timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr",'
'"costime": "$request_time",'
'"realtime": "$upstream_response_time",'
'"status": $status,'
'"x_forwarded": "$http_x_forwarded_for",'
'"referer": "$http_referer",'
'"request": "$request",'
'"upstr_addr": "$upstream_addr",'
'"bytes":$body_bytes_sent,'
'"dm":$request_body,'
'"agent": "$http_user_agent" }';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
gzip on;
upstream env1 {
server server1:port weight=3;
}
upstream env2 {
server server2:port weight=3;
}
upstream env3 {
server server3:port weight=3;
server server4:port weight=3;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log logs/pay.access.log main;
#设定参数flag为0
set $flag 0;
location / {
#设定form 提交的参数变量
set_form_input $app_server_id app_server_id;
set_form_input $app_role_id app_role_id;
#直接拒绝get请求
if ( $request_method = "GET" ) {
return 403;
break;
}
if ( $app_server_id = "10" ) {
#010
set $flag "${flag}10";
}
if ( $app_role_id = "15" ) {
#015
set $flag "${flag}15";
}
if ( $app_role_id = "14" ) {
#014
set $flag "${flag}14";
}
if ( $flag = "01015" ) {
proxy_pass http://env1;
break;
}
if ( $flag = "01014" ) {
proxy_pass http://env2;
break;
}
proxy_pass http://env3;
}
}
}
这就是根据获取的参数转发到后端相应服务器的设置。
最后
以上就是英勇项链为你收集整理的nginx根据post请求参数做转发的全部内容,希望文章能够帮你解决nginx根据post请求参数做转发所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复