yzq8951 2015-01-24 11:23 采纳率: 0%
浏览 1478

请问perl是否可以改写nginx服务器得到的POST请求地址,并且不能丢失post的数据

场景:后端JAVA应用作了一个断点续传的功能,测试OK,由于一些环境限制原因,前端必须用nginx转发。坑爹的是nginx的rewrite功能会把post请求变为get请求,如果使用
proxy pass则会出现如果用户上传中断,nginx不会把已经上传的东西扔给后端应用

现在考虑方向是改写post请求的链接(改成IP加端口)但是不更改别的东西,比如post的数据,方法等等,或者干脆收到此种请求后,直接模拟一个新的POST请求?说到底其实就是直接想办法跳过nginx, 请问perl module那边是否有办法能实现?

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-05-27 00:03
    关注

    该回答引用ChatGPT-3.5,仅供参考,不保证完全正确

    Perl本身并不是一种用于服务器配置的工具,但是你可以使用Perl来编写一个简单的CGI脚本或FastCGI应用程序,以处理Nginx转发的请求,并修改POST请求的地址,同时保留POST数据。以下是一个示例CGI脚本的代码:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use CGI;
    
    # 创建CGI对象
    my $cgi = CGI->new();
    
    # 获取POST数据
    my $post_data = $cgi->param('POSTDATA');
    
    # 构造新的POST请求地址
    my $new_url = 'http://新的地址';
    
    # 发送POST请求
    my $response = $cgi->redirect(-uri => $new_url, -status => '307 Temporary Redirect', -content_type => 'text/html');
    
    # 输出响应
    print $response;
    

    在这个示例中,我们使用Perl的CGI模块来处理HTTP请求。我们创建了一个CGI对象并从中获取POST数据。然后,我们构造了一个新的POST请求地址,并使用redirect函数将请求重定向到新的地址。请注意,我们使用307状态码来表示临时重定向,并将Content-Type设置为"text/html"。


    你需要将这个脚本部署到一个支持CGI的服务器上,并将Nginx配置文件中的转发规则指向该脚本。这样,当Nginx收到POST请求时,它将转发到Perl脚本,然后脚本会修改请求地址并重定向到新的地址。


    需要注意的是,这只是一个简单的示例,你可能需要根据你的具体需求进行适当的修改和调整。另外,你还可以考虑使用其他更强大的Web框架,如Dancer、Mojolicious等,来处理请求和构建更复杂的功能。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的