zoukankan      html  css  js  c++  java
  • linxu中Nginx请求转发心得(php请求转发.net core程序中)

       背景介绍,新进公司之前后台是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/下

    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<Startup>()
              
                            .UseUrls("http://0.0.0.0:80")
                      
                           ;
                          }) 
                      .UseNLog() 
                      .UseServiceProviderFactory(new AutofacServiceProviderFactory());
        }
    

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

  • 相关阅读:
    修改spring MVC配置文件的默认位置
    TCP三次握手四次挥手视频讲解
    Redis端口配置
    applicationContext-redis.xml
    PageHelper的分页原理
    maven的三种工程 pom工程、jar工程、war工程的区别和使用
    springboot 整合spring Data JPA的资源配置pom.xml
    Spring知识点整理
    jdk1.6 和 jdk1.7 区别
    linux中安装redis
  • 原文地址:https://www.cnblogs.com/axyls/p/13413000.html
Copyright © 2011-2022 走看看