Java Springboot程序走Linux本地代理http_proxy

情况说明

内网服务器A(windows)可以访问外网,B (centos) 无法访问外网,业务需求需要B通过A代理访问外网天气接口

方法

1. A服务器设置代理

A 服务器使用CCProxy做正向代理
A 服务器使用Nginx做正向代理(我的做法,配置文件后面给出)

2.B服务器通过代理访问

B 服务器配置http_proxy export http_proxy=http://192.168.0.11:1080;export no_proxy=192.168.*,*.local,localhost,127.0.0.1
(可实现命令行curl方式通过代理请求外网,Java程序无法读取设置的代理,不知道是开发的配置问题还是其他原因)

让开发配合解决,我给提供了以下参考https://cloud.tencent.com/developer/article/1129653 https://www.cnblogs.com/badboyf/p/6223457.html

最终解决

启动命令加参数
java -Dhttp.proxySet=true -Dhttp.keepAlive=false -Dhttp.proxyHost=192.168.2.18 -Dhttp.proxyPort=1080 -Dhttp.nonProxyHosts="localhost|127.0.0.1|192.168.*" -jar aaa.jar
开发修改了代码据说是使其可以加载环境变量,但是并没有读取到我export设置的系统环境变量,所以必须加上上述参数才可以做到代理

Nginx正向代理配置

	server 
	{
	listen 1080;
	server_name localhost;
	
	location / {
		proxy_set_header Host aaa.bbb.com;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://aaa.bbb.com; #aaa.bbb.com必须可以正确解析
		}
	}

这样的缺点是每次只能代理一个域名,通过内置变量实现通用匹配

	server 
	{
	listen 1080;

	location / {
		proxy_set_header HOST $host;
		proxy_pass http://$host$request_uri;     #设定代理服务器的协议和地址 
		proxy_buffers 256 4k;
        proxy_max_temp_file_size 0k;
        proxy_connect_timeout 30;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_next_upstream error timeout invalid_header http_502;
		}
	}

我这样配置了没有成功,报错502,时间关系没有继续排查,有感兴趣的可以试一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值