文章目录
- 一、前言
- 二、分析
- 三、搭建
- 1、搭建nginx,监听http请求转发
- 2、监听https请求转发
- 四、总结
一、前言
在工作中,开发完的接口,一般测试的话,基本是使用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没干活或者无法识别,当初我这里就出现了这种情况,然后在请求头加上一些参数,就正常了,具体看每个公司的配置情况了
以上就是本文的全部内容了,分享到这,欢迎大家在评论区一起探讨~