aspx转发php_linxu中Nginx请求转发心得(php请求转发.net core程序中)

本文探讨了如何从PHP环境迁移到.NET Core系统,并对比了三种不同的接口转发策略:直接在PHP中重定向、通过Nginx配置转发和在.NET Core中处理请求。针对高并发场景,讨论了在Nginx中实施限流措施以及由此带来的问题,以及如何在.NET Core中处理请求来避免这些问题。
摘要由CSDN通过智能技术生成

背景介绍,新进公司之前后台是php开发的外包做的,比较难以满足现在的业务,所以让我写一套系统 满足现在的业务,外包做的项目环境搭建是ubun18.04+mysql+php+nginx(php发布使用端口是80),里面php程序的话有个数据上传接口,Get:url/project/UploadData.php,与外部交互。这个地方就需要做跳转

1直接在程序里面做转发

找到php程序发布的目录,找到project目录下的UploadData.php文件顶部

< ?phpheader("Location: https://www.cnblogs.com/axyls/");exit;?>

这个方法可以用但是转了好几层,先是用户请求到nginx,然后到php程序,然后到自己写的.net core中,用了一段时间后直接取消了,感觉不太好

2直接Nginx里面做转发

找到nginx配置文件nginx.conf,在etc/nginx/下

http {

server {

server_name 127.0.0.1;

location /project/UploadData.php

{

proxy_pass https://www.cnblogs.com/axyls;

}

}

}

这样就可以转发了,但是如果数据多了请求频繁了就要在nginx里面做限制,要求一个ip一秒访问一次UploadData.php这个接口网页,

limit_req_zone $binary_remote_addr zone=one2:10m rate=1r/s;

然后跳转我的网页,但是最后发现.net core如果要区分用户请求ip是无法区分的,因为都是nginx转发到.net core,(nginx应该可以做到转发得到时候用户请求的是什么ip就抓发什么ip)

3直接正在.net core里面设置接收这个请求

在 Startup.cs里面添加

app.UseEndpoints(endpoints =>

{

endpoints.MapControllerRoute(

name: "default",

pattern: "{controller=Login}/{action=Index}/{id?}");

endpoints.MapControllerRoute(

name: "project",

pattern: "{controller=project}/{action=UpdateData}.php");

});

然后将程序发布到80端口,在program.cs里面

public static IHostBuilder CreateHostBuilder(string[] args) =>

Host.CreateDefaultBuilder(args)

.ConfigureWebHostDefaults(webBuilder =>

{

webBuilder.UseStartup()

.UseUrls("http://0.0.0.0:80")

;

})

.UseNLog()

.UseServiceProviderFactory(new AutofacServiceProviderFactory());

}

卸载nginx,或者关掉nginx,这样接口接收到请求数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值