• 如何在测试/线上环境页面访问本地接口?


    一、前言

    在工作中,开发完的接口,一般测试的话,基本是使用Postman,如果要到页面测试,就要发版进行测试,重启服务,时间挺久的,如果发现有bug,还要修改后再重新发版,效率很低,所以,能不能直接页面调用本地接口?这就有了这篇文章,下面和大家分析下怎么实现的

    二、分析

    页面请求后端接口,基本都是统一使用nginx反向代理,转发请求到相应的服务,所以,我们可以配置好nginx,转发请求到本地服务,这应该是走得通的,我们直接改测试环境的nginx?这肯定不行,改完之后,其它人使用测试环境,也调用到了我的本地服务,这直接影响到了所有人,所以,我们可以试着在本地安装一个nginx,然后请求直接到我们本地的nginx,再做一层转发,看看调回原来的nginx,还是调本地服务
    反向代理:代理的是服务端,相对于在在Internet和服务端之间加上一个中间服务,拦截所有发给服务端的请求,然后再统一分发给代理的服务端

    三、搭建

    1、搭建nginx,监听http请求转发

    首先下载个nginx,下载地址,下载后解压即可

    在安装目录下的conf文件夹中,可以看到自带的配置文件nginx.conf,这里我们不改变原来默认的配置文件,只是做一个扩展,新建forlan.conf,内容如下:

    server {
        listen 80;  # 监听端口号
        server_name forlan.com;  # 您的域名
    
    	location / {
    		proxy_pass https://blog.csdn.net/qq_36433289?type=blog;
    	}
    }
    

    把我们新建的配置加入到默认配置nginx.conf中

    http {
    	include forlan.conf;
    }
    

    然后就可以启动nginx

    #检查nginx是否配置正确
    F:\nginx-1.24.0>nginx -t
    nginx: the configuration file F:\nginx-1.24.0/conf/nginx.conf syntax is ok
    nginx: configuration file F:\nginx-1.24.0/conf/nginx.conf test is successful
    
    #启动nginx
    F:\nginx-1.24.0>start nginx
    
    #重新加载配置
    F:\nginx-1.24.0>nginx -s reload
    

    到这一步为止,只是在我们本地装好了nginx,但请求还是不会走到我们本地的nginx,还是走了测试环境的,所以还需要配置关键的1步,才能让指定域名的请求到本地
    修改hosts文件,配置127.0.0.1 forlan.com
    注:一般路径在我们电脑的C:\Windows\System32\drivers\etc

    到这里,就配置好了,一旦forlan.com地址的http请求,就会请求到本地,具体可以自己验证下

    2、监听https请求转发

    如果需要监听https请求,就需要配置crt证书,具体安装生成过程如下:

    安装OpenSSL,下载地址
    按照以下步骤,生成crt证书:

    # 生成密码key
    openssl genrsa -aes256 -passout pass:123456 -out forlan.pass.key 2048
     
    # 生成key
    openssl rsa -passin pass:123456 -in forlan.pass.key -out forlan.key
     
    # 生成证书请求文件(CSR)
    openssl req -new -sha256 -key forlan.key -out forlan.csr
     
    # 生成自签名证书
    openssl x509 -req -sha256 -days 3655 -in forlan.csr -signkey forlan.key -out forlan.crt
    

    在这里插入图片描述
    然后就在我们的forlan.conf配置上监听https请求的server即可,如下的ssl_certificate和ssl_certificate_key:

    server {
    	listen       443 ssl;
    	server_name  forlan.com;
    
    	ssl_certificate      forlan.crt;
    	ssl_certificate_key  forlan.key;
    
    	location / {
    		proxy_pass https://blog.csdn.net/qq_36433289?type=blog;
    	}
    }
    

    如果我们想要进一步扩展实现,把指定路径的请求转发到本地服务,非指定的请求还是转发到测试服务,具体可以配置如下:

    server {
    	listen       443 ssl;
    	server_name  forlan.com;
    
    	ssl_certificate      forlan.crt;
    	ssl_certificate_key  forlan.key;
    
    	location /study/xxx {
    		proxy_pass http://localhost:8888/study/xxx;
    	}
    	
    	location / {
    		proxy_pass https://测试环境ip:443;
    	}
    }
    

    按照以上配置后,具体的效果就是,当我们请求https://forlan.com/study/xxx,就会请求到本地服务,其它路径请求的话,经过本地的nginx,转发请求到原来的服务(测试环境)

    四、总结

    其实就是在本地安装一个nginx,然后配置好具体的代理路径,不需要走本地的,就转回给测试环境的nginx进行
    在配置期间,遇到个情况,请求出现404错误,这很明显就是路径没找到,可能就是你转发到测试环境,但测试环境的nginx没干活或者无法识别,当初我这里就出现了这种情况,然后在请求头加上一些参数,就正常了,具体看每个公司的配置情况了

    以上就是本文的全部内容了,分享到这,欢迎大家在评论区一起探讨~

  • 相关阅读:
    如何选择适合的Java服务器租用方案
    给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!
    ES6中的set与map
    猿创征文|GaussDB(for openGauss):基于 GaussDB 迁移、智能管理构建应用解决方案
    python 图形界面“诈金花”游戏,更新了!附完整代码
    Elk-Metricbeat配置Nginx的日志分析 (Metricbeat-part2)
    国联易安:网络反不正当竞争,要防患于未然
    接口日志,统一记录(AOP+自定义注解)
    前端必要收藏相关要点
    LaTeX使用(公式,表格,图片,中文字符)
  • 原文地址:https://blog.csdn.net/qq_36433289/article/details/132696920