linux 正向同步
項目上web服務器不給訪問外網,遷移服務器環境又太麻煩,決定給web服務器做正向代理,剛開始使用nginx,但是https代理一直不成功,后面大佬建議使用squid來達到相同目的,在不考慮安全和性能等其他問題下使用squid正式太簡單了,下面進去正文
這里先貼出nginx代理,http沒問題,但https不成功,如果有成功的希望留下幾句指導一下,哈哈,謝謝
server {
resolver 114.114.114.114;
listen 10002;
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header HOST $http_host;
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;
}
}
server {
resolver 114.114.114.114;
listen 10001;
location / {
proxy_pass https://$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;
}
}
curl https://bizapi.jd.com/api/area/getProvince # 在另外機器上面測試成功
需要注意上面訪問https時只能使用http,但是http代理成功了,https未成功
配置squid代理
1.安裝squid
yum -y install squid //centos環境
2.修改內核參數,打開ip轉發
vim /etc/sysctl.conf # 修改0為1 :# net.ipv4.ip_forward = 1
sysctl -p # 使內核參數修改生效
3.簡答修改squid配置文件
vim /etc/squid/squid.conf
# 將后面的http_access deny all 修改為 :# allow
# 將http_port修改為自己指定的代理端口:10001
4.啟動squid
service start squid
5.測試代理
curl --proxy 192.168.6.166:10001 https://www.baidu.com
6.配置全局代理 vim /etc/profile
export http_proxy=http://192.168.99.99:10001
export https_proxy=http://192.168.99.99:10001
7.再次測試
curl --proxy 192.168.6.166:10001 https://www.baidu.com #成功
為jvm參數設置http/https代理
上面我們只是設置了服務器的http代理,程序並不能使用,還需要設置jvm參數,不然java程序是使用不了服務器的全局http代理的,你可以修改java代碼設置http代理,也可以添加jvm參數,這里選擇修改jvm比較方便
#修改Tomact的startup.sh或者catalina.sh腳本,添加如下
# ----- Execute The Requested Command -----------------------------------------
#add jmx
export CATALINA_OPTS="$CATALINA_OPTS -Dhttp.proxySet=true"
export CATALINA_OPTS="$CATALINA_OPTS -Dhttps.proxyHost=192.168.6.166"
export CATALINA_OPTS="$CATALINA_OPTS -Dhttps.proxyPort=10001"
#注意:這里我只配置了https,你也可以添加http和不代理的
-Dhttp.proxySet=true
-Dhttp.proxyHost=proxy.xyz.com
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxy.xyz.com
-Dhttps.proxyPort=8080
-Dhttp.nonProxyHosts=*.xyz.com
-Dhttps.nonProxyHosts=*.xyz.com
至此,squid代理web服務器訪問外網成功!