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

一、前言

在工作中,开发完的接口,一般测试的话,基本是使用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请求,就会请求到本地,具体可以自己验证下

如果还是不走本地配置,刷新下DNS:

ipconfig /flushdns

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没干活或者无法识别,当初我这里就出现了这种情况,然后在请求头加上一些参数,就正常了,具体看每个公司的配置情况了

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Forlan

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值