最近与客户端调试后台服务(后面称为服务A)时,提示接口获取信息失败,看了服务端日志,显示当前服务A调用远程服务超时,但使用其他服务(后面称为服务B)调用远程服务(后面简称为服务C),可正常请求成功。初步分析是当前服务A被目标服务器拒绝访问,不能访问远程服务,由于某些原因,又不能进行解禁。
跟有经验的同事交流了一下经验,决定将原本服务A直接请求服务C,改为服务A请求服务B,在服务B用Nginx转接URL到目标服务器C,使接口成功调用。
首先服务B上未安装nginx,先安装nginx
[root@localhost ~]# yum install nginx
安装成功后,进入etc/nginx/nginx.conf文件,并编辑,添加在http{}中添加server{...}内容进行转接
[root@localhost ~]# cd /etc/nginx/
[root@localhost nginx]# vim nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
#自动生成内容,此处省略
#...
server {
proxy_connect_timeout 100;#请求超时时间
listen 8081;#请求路径端口
location / {
proxy_connect_timeout 100;#请求超时时间
proxy_pass http://xxx.xxx.xxx:8082;#转接路径
proxy_set_header Host $host:1000;#将原请求的http链接header头中的Host信息放到转发请求中
fastcgi_buffers 8 128k;#缓冲区大小设置
}
}
转接完成后,重启一下nginx
[root@localhost nginx]# nginx -s reload
重新从服务A访问目标服务接口,请求成功。