精华内容
下载资源
问答
  • nginx根据post请求参数转发

    万次阅读 2019-07-23 09:16:22
    在工作中遇到了根据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-...

    在工作中遇到了根据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;
            }
        }
    }
    

    这就是根据获取的参数转发到后端相应服务器的设置。

    展开全文
  • 项目开发测试上传头像功能,使用postman... 查看nginx 访问日志,发现请求方式被转发为GET请求。 查看nginx配置文件,符合转发规则的部分只有http请求转发为https。 server { listen 80; server_name www....

    项目开发测试上传头像功能,使用postman模拟请求未返回任何数据

    问题排查:

                   请求虽然未返回任何数据,但是状态码返回为200,明显请求是成功的

                   查看nginx 访问日志,发现请求方式被转发为GET请求。

                   查看nginx配置文件,符合转发规则的部分只有http请求转发为https。

        server {
            listen       80;
            server_name  www.zlq.com;
            return       301 https://$server_name$request_uri;
               }

                   怀疑是http请求转发为https时将POST请求转发为GET请求               

                   在postman中,将http请求改为https请求后模拟,此时正常返回数据

    问题原因:

                 查找了一部分资料说是 301 & 302 转发的时候将请求重定向且省略了中间信息返回的这一部分

                 这个时候可以使用307进行转发,307转发会在重定向中依旧保持原有的数据。

    展开全文
  • nginx + lua 根据post请求参数转发

    千次阅读 2019-10-04 06:47:50
     arg = ngx.req.get_post_args()['params'] end if arg ~= nil then  local json = require("cjson")  local jsonObj = json.decode(arg)  local profile = jsonObj['query']['user_profile']  local years ...

            location / {
                 content_by_lua_file "lua/dispatch.lua";
             }


            location @user_profile_api12 {

             content_by_lua_block {
                     ngx.say("xxxx")
             }
             }


            location @user_profile_api3 {

             content_by_lua_block {
                     ngx.say("hahahah")
             }
            }



    lua/dispatch.lua

    -------------------------------

    local request_method = ngx.var.request_method
    local arg=nil
    if request_method == "GET" then
             arg = ngx.req.get_uri_args()['params']
    elseif request_method == "POST" then
             ngx.req.read_body()
             arg = ngx.req.get_post_args()['params']
    end

    if arg ~= nil then
       local json = require("cjson")
       local jsonObj = json.decode(arg)
       local profile = jsonObj['query']['user_profile']
       local years = jsonObj['query']['year_id']

      if years ~= nil and profile ~= nil and profile[1] == 'bought_record' then
             ngx.exec('@user_profile_api3') 
       elseif profile ~= nil and profile[1] == 'xubao' then
             ngx.exec('@user_profile_api3')
       else 
             ngx.exec('@user_profile_api12')
       end
    end

    转载于:https://www.cnblogs.com/maoxiangyi/p/11611383.html

    展开全文
  • nginx 添加post请求参数

    2021-03-19 16:59:52
    排查请求需添加nginx入参, (1)需要在log_format main后加escape=json (2)nginx的版本需要是1.15.1及以上 (3)满足以上最终打印出的结果

    排查请求需添加nginx入参,

    (1)需要在log_format main后加 escape=json

     (2)nginx的版本需要是1.15.1及以上

    (3)满足以上最终打印出的结果

    展开全文
  • nginx转发post请求

    千次阅读 2019-08-09 10:39:14
    应用场景: 由于项目迁移,旧接口的代码重新部署在了另外一个域名下的项目,比如: 旧接口地址:... ... https://cecshop.com/api/recommend/add 转发到 https://capis.com/rec/recom...
  • https://www.cnblogs.com/muhy/p/10506062.html https://www.cnblogs.com/gs008/articles/12579725.html
  • nginx处理post请求之数据转发

    万次阅读 2017-09-15 06:42:50
    上一篇文章分析了nginx在处理post请求时,如何启动upstream这个负载均衡模块。它是一个http框架,由它来调度具体的模块,例如fastcgi, proxyd反向代理等,这些模块负责将来自客户端 的请求包体,请求包体转为与后端...
  • nginx转发请求导致参数丢失

    万次阅读 2019-05-14 14:00:13
    在使用nginx转发请求时,发现get请求获取不到请求参数 原来的配置为: location / { proxy_pass http://localhost:8080; } 配置这样且每次请求的主机域名和ip都为127.0.0.1,无法获取到实际请求的数据,nginx在...
  • 应用前端发送post请求,系统后台没有任何返回。(get请求可以) 框架为struts2+spring,请求方式ajax post。 日志提示: [DEBUG][front][2019-01-24 16:46:00]Setting params NONE...
  • 最近和某行合作,使用某行APP访问我们的web,会post一个user_id的参数,我们需要获取这个user_id做一些验证。...这里实现的方案是通过nginx+lua 来获得post请求参数环境:centos:6.x or 7.xng...
  • nginx-使用lua进行POST参数解析并转发

    千次阅读 2020-07-04 13:54:35
    有这样一个需求:根据请求中的各参数使用nginx转发到本地或者其他主机的不同端口。 首先需要安装lua模块: 安装LuaJIT wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz tar -xvf LuaJIT-2.0.2.tar.gz cd ...
  • 项目背景: 需要做一个小程序的后台服务器;... 1.nginx 配置安装openssl 模块: Nginx开启SSL模块: 切换到源码包: ...在configure arguments:后面显示的原有的configure参数如下: --prefix=/usr/loc..
  • nginxPOST请求数据 写入到 日志文件中 nginx 自动解压gzip压缩数据的两种方式:nginx自动解压、后台java程序解压 nginx安装、nginx反向代理/负载均衡、Lua、LuaJIT、openresty、lua-nginx-module、ngx_devel_...
  • nginx请求路径相同,但请求方式不同分部转发到不同服务的情况 nginx配置如下 ``config location /api { if ($request_method ~ GET) { proxy_pass http://127.0.0.1:8111; } if ($request_method ~ ...
  • 安装LuaJIT cd /opt ...tar -xvf LuaJIT-2.0.2.tar.gz cd LuaJIT-2.0.2 make install # 下面这条解决找不到libluajit-5.1.so.2的报错 ln -s /usr/local/lib/libluajit-...安装nginx wget https://github.com/simpl/ngx_de
  • 环境安装 mkdir /usr/local/LuaJIT cd /usr/local/LuaJIT ...tar -xvf LuaJIT-2.0.2.tar.gz export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/usr/local/include/...mkdir /usr/local/nginx cd /usr/local/ngi
  • nginx 代理post请求变成get请求问题

    万次阅读 2019-08-13 20:54:00
    最近项目中通过nginx转发,解决请求跨域问题,配置如下: location ~ ^/api/b.com/(.*) { rewrite ^/api/b.com/(.*)$ /$1 break; proxy_pass http://b.com; proxy_redirect off; proxy_set_header Host b....
  • 关键词: nginx + lua 脚本 lua 获取 http 请求参数 ...用 nginx 向外提供统一接口,在 nginx 内用 lua 脚本获取请求参数,根据参数中的平台信息将请求发送给不同的平台。 具体实现: 在 CentOS7 服务器上安装
  • nginx转发请求给tomcat,因为某些原因,tomcat要保留ContextPath,也就是说,访问tomcat的时候是http://localhost:8080/Context32/。但是又不想在浏览器里体现出来,所以想到用nginx转发。但是不随人愿,配置成下面...
  • 额外命令 cd /data/env/pyweb/bin source activate killall -9 uwsgi uwsgi -x /data/wwwroot/Logistics/Logistics.xml nohup uwsgi /data/wwwroot/yiliao1/uwsgi.ini.../usr/local/nginx/sbin/nginx -s reload 前...
  •  } } 访问必须 https://1.1.1.2:8080?id=111111 2、nginx配置ssl证书,并实现代理转发 server { listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。 server_name ***.com.cn; ...
  • 在http请求后端时,token是一种非常常见的使用方式,但是如果url请求参数不带token,或者请求头部不带token这样的请求应当直接返回401,而不要代理给后端服务器做处理了。可以有效降低后台服务器的负载。 ...
  • # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要...
  • 浏览器请求服务器的时候,请求http地址,首先依旧是会获得到 301 状态码,但是浏览器会再次转换成 https 请求,但是这个过程中,会把 post 中的参数(即java中 inputStream())丢失 解决办法 没有更好的解决...
  • 应工作需求,访问一个网站时直接跳转到另一个url ...proxy_pass转发url的参数,可以通过在location中用rewrite来做,所以完善后的配置如下: location ~ ^/api/([0-9]+)(\.[0-9]+)*/client/ { rewri
  • nginx:get post数据超长引发的异常

    千次阅读 2019-05-27 16:23:36
    用curl发送post请求,data超长(1026,也就是大于1k)时,可以发现数据是分步骤发送出去的 遇到的问题是:send for continue 一直发不出去 网络运营商mtu设置网络异常 2、get 前提是:用nginx做proxy,后端是python...
  • 在请求时,f12提示POST请求报错405 环境描述 nginx转发至后端nginx,后端nginx转发至后端golang api接口 解决步骤 根据网上方法排查,发现80%以上无非就是以下几个解决方法 方法一:将所有POST 405错误发送...
  • nginxPOST转GET请求解决405问题
  • 前言 Google Analytics 加载缓慢是本博客在国内...),但无论如何还是要向 Google 发送一个请求来发送访客数据,所以取巧地使用 CDN 并不能从根本上解决问题。前段时间翻看一个知名博主的文章时,有一篇名为 本博客零散

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,312
精华内容 4,924
关键字:

nginxpost请求参数转发