背景介绍,新进公司之前后台是php开发的外包做的,比较难以满足现在的业务,所以让我写一套系统 满足现在的业务,外包做的项目环境搭建是ubun18.04+mysql+php+nginx(php发布使用端口是80),里面php程序的话有个数据上传接口,Get:url/project/UploadData.php,与外部交互。这个地方就需要做跳转
1直接在程序里面做转发
找到php程序发布的目录,找到project目录下的UploadData.php文件顶部
< ?php header("Location: https://www.cnblogs.com/axyls/"); exit; ?>
这个方法可以用但是转了好几层,先是用户请求到nginx,然后到php程序,然后到自己写的.net core中,用了一段时间后直接取消了,感觉不太好
2直接Nginx里面做转发
找到nginx配置文件nginx.conf,在etc/nginx/下
1 2 3 4 5 6 | http { server { server_name 127.0.0.1; location /project/UploadData.php <br> { proxy_pass https: //www.cnblogs.com/axyls; } <br> } <br> } |
这样就可以转发了,但是如果数据多了请求频繁了就要在nginx里面做限制,要求一个ip一秒访问一次UploadData.php这个接口网页,
1 | 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里面添加
1 2 3 4 5 6 7 8 9 10 11 | 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里面
1 2 3 4 5 6 7 8 9 10 11 12 13 | public static IHostBuilder CreateHostBuilder( string [] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>() .UseUrls( "http://0.0.0.0:80" ) ; }) .UseNLog() .UseServiceProviderFactory( new AutofacServiceProviderFactory()); } |
卸载nginx,或者关掉nginx,这样接口接收到请求数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程