阿里云***(FQ)实战

前言

​ 因为公司涉及国外业务,依赖于google的map服务,生产环境我们使用的是亚马逊服务器,所以访问google地图没问题,但是国内的开发、测试环境,使用的是阿里云,想访问谷歌地图,就歇菜了,因此有了下面的折腾。

​ 做之前我们先捋一捋思路,平时我的mac上都是时刻保持***的状态,但是到了服务版Linux,木有软件可用,需要采用shadowsocks+privoxy配合的方式。shadowsocks链接socket代理服务器,privoxy将socket代理转为http代理。

部署shadowsocks

A. 更新一遍源

# 以Centos为例, Ubuntu等其他系统相应的更改命令yum为apt-get即可
sudo yum update

B. 安装python-pip

# 因为后面安装的shadowsocks是基于Python的,所以需要先安装Python源
sudo yum install python-pip

C. 安装shadowsocks

# 基于Python安装shadowsocks,这里有一点需要说明,shadowsocks是不区分客户端、服务端的,都是一个包,只是用过不同的启动方式来区分是客户端还是服务端
sudo pip install shadowsocks

D. 配置shadowsocks

# shadowsocks客户端的启动方式有两种,第一种方式是指定配置文件启动的方式,第二种是将配置作为启动参数启动。这里我们选择第一种方式,更方便快捷。
sudo vi /etc/shadowsocks.json
# 写入下面的内容,汉字部分,自行替换,注释可以删掉
# 通常只需要`地址``端口``密码``加密方式`
{
    "server":"代理服务器ip", // 代理服务器的访问地址
    "server_port":代理服务器端口, // 代理服务器的访问端口
    "password":"代理服务器访问密码", // 代理服务器的访问密码
    "method":"aes-256-cfb", // 代理服务器访问密码加密方式,大部分默认的都是aes-256-cfb
    "local_address":"127.0.0.1", // 本地socket代理访问地址,这里是设置其他应用***的关键
    "local_port":1080, // 本地socket代理访问端口,这里是设置其他应用***的关键
    "timeout":600
}

E. 启动shadowsocks

# 该步骤,部分机器可能会出错,出错了不要懵逼,属于Python版本兼容的问题,根据错误信息百度自行解决即可
sudo sslocal -c /etc/shadowsocks.json -d start
# 如果没有解决,那么可以使用下面的命令启动,效果一样
nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
# 想增加开启启动的童鞋,自行百度
> http://www.baidu.com

部署privoxy

前面讲到了,shadowsocks的本地代理只是开放了socket代理方式,对于服务器的使用HTTP方式请求的软件,无法直接使用,需要有一个软件来把http的代理需求转成socket的方式,让shadowsocks去代理,不管听没听懂,接下来如果你想让curl、wget等可以FQ,想让java程序中的http请求可以FQ,那么你需要安装一个privoxy

A. 安装privoxy

# 直接yum安装,Ubuntu等同理apt-get
sudo yum install privoxy

B. 配置privoxy

# 打开privoxy配置文件,更改配置项
sudo vi /etc/privoxy/config

打开后,privoxy的配置文件巨长,其中分章节,耐心往下翻按照步骤,找到对应的章节,进行更改

  • 4.1. listen-address 章节

在该章节下找配置:listen-address 127.0.0.1:8118(8118就是http代理端口),该配置应该位于4.1章节末尾处,如果在4.1章节中找不到该配置,或者该配置被注释了,那么就添加上或者解开注释,通常是默认开启的。

  • 5.2. forward-socks4, forward-socks4a, forward-socks5 and forward-socks5t章节

    在该章节下找配置:forward-socks5t / 127.0.0.1:9050 .注意最后面的.很重要,不要误删了),该配置默认是关闭的,首先要做的是解除#注释,然后修改9050端口为shadowsocks的本地代理端口1080

C. 启动privoxy

# Centos启动
sudo systemctl restart privoxy
# Ubuntu启动
sudo /etc/init.d/privoxy restart
# Centos下尝试上述的启动方式失败,没查到具体原因,改为如下的启动方式
sudo privoxy /etc/privoxy/config

系统代理设置

如果想让curl、wget的命令可以FQ,那么需要配置这一步,如果不需要,请直接略过

# 打开配置文件
sudo vi /etc/profile

# 文件末尾添加如下信息
export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"
export ftp_proxy="127.0.0.1:8118"

# 刷新配置文件
source /etc/profile

Java 程序代理设置

以spring-boot应用为例,直接上代码

添加配置

# application.yml中添加自定义配置
google:
  proxy:
    host: 127.0.0.1
    port: 8118

添加配置类,不添加yml中的配置的话,该配置类是不起作用的,具体百度“@ConditionalOnProperty”注解

/**
 * 创建googel的代理配置类,读取配置文件,然后设置系统变量
 */
@Slf4j
@Data
@Component
@ConfigurationProperties(prefix = "google.proxy")
@ConditionalOnProperty(prefix = "google.proxy", name = {"host", "port"})
public class GoogleProxyConfig {

    private String host;

    private String port;

    @PostConstruct
    public void init() {

        log.info("初始化google的代理服务");

        System.setProperty("http.proxyHost", host);
        System.setProperty("http.proxyPort", port);
        System.setProperty("https.proxyHost", host);
        System.setProperty("https.proxyPort", port);
    }
}

阿里云***(java应用)的更多相关文章

  1. 使用阿里云Java SDK 实现 DDNS

    本代码的实现前提: 1.拥有阿里云域名,且获取了Access Key 及 Access Secret 2.能获取外网IP的页面地址(注意:ip138.com的实际包含ip地址为http://2018. ...

  2. 从0开始搭建一个阿里云java部署环境

    一.购买服务器 https://www.aliyun.com/daily-act/ecs/activity_selection?spm=5176.8112568.738194.8.674c9ed53Y ...

  3. 阿里云Java镜像:基本配置和总体说明

    本文中的内容,来自阿里云镜像系统自带的说明.  下次不想用镜像了,感觉也没有节省多少工作量. 一.软件 1.nginx /usr/local/nginx 2.tomcat-7 /var/tomcat/ ...

  4. 阿里云SDK手册之java SDK

    进行阿里云sdk开发的前提是已经购买阿里云的相关服务才能调用阿里的相关接口进行开发.最近公司在做云管控的项目,于是进行下摘录总结. 一. 环境准备 阿里云针对不同的开发语言提供不同的sdk,由于项目用 ...

  5. 阿里云部署Java web项目初体验(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

  6. 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境

    使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...

  7. 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat

    摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 一.准备工作 购买了阿里云的云解析,和云服务器ecs. 2.下载put ...

  8. JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)

    java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等 ...

  9. 【阿里云产品公测】开放搜索服务 opensearch java jdk 应用体验之 机器人聊天

    作者:阿里云用户啊里新人 需求:基本实现智能聊天! 最近在开发一款机器人,希望实现基本的聊天功能,词库是有的,但是如果是做完全匹配这个出来的效果很悲催,   比如词库:你好,回答是:哈哈,很好啊. 如 ...

  10. 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

    [阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人   初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...

随机推荐

  1. java在线聊天项目1.0版 异常处理——开启多个客户端,关闭一个客户端后,在其他客户端中再发出信息会出现异常的处理

    异常一 只开启一个客户端,输入信息后关闭,客户端出现如下异常 根据异常说明 ChatClientFrame客户端117行 提示原因是Socket关闭 分析原因 客户端代码 while (connect ...

  2. ios retain copy 以及copy协议

    阅读本文之前首先了解Copy与Retain的区别: Copy是创建一个新对象,Retain是创建一个指针,引用对象计数加1. Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的 ...

  3. C++ STL容器之 map

    map 是一种有序无重复的关联容器. 关联容器与顺序容器不同,他们的元素是按照关键字来保存和访问的,而顺序元素是按照它们在容器中的位置保存和访问的. map保存的是一种 key - value 的pa ...

  4. Elasticsearchs的安装/laravel-scout和laravel-scout-elastic的安装

    安装: https://github.com/medcl/elasticsearch-rtf 先下载包 下载解压后 cd elasticsearch-rtf-master ll bin/elastic ...

  5. 《C/C++工程师综合练习卷》之小试牛刀

    第一套练习之感受 刚刚注册了牛客网的账号,准备在此衡量一下水平,好好磨练一番.看到推荐练习<C/C++工程师综合练习卷>,oh,20道题,2个小时.由于木有经验,好一番紧张~ 结果用了20 ...

  6. xtu数据结构 G. Count the Colors

    G. Count the Colors Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Jav ...

  7. 菜鸡的2017CPPC网络赛

    Friend-Graph Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. 【软考2】Java语言的基本知识汇总

    导读:现在对于java这一模块,还没有相应的项目经验,只是通过各种类型的资料,对java有一个面上的了解.现在,对此做一个罗列总结,在以后的学习过程中,逐步完善! 一.语言的发展 1.1,机器语言 在 ...

  9. HDU-4848 Wow! Such Conquering! 爆搜+剪枝

    Wow! Such Conquering! 题意:一个n*n的数字格,Txy表示x到y的时间.最后一行n-1个数字代表分别到2-n的最晚时间,自己在1号点,求到达这些点的时间和的最少值,如果没有满足情 ...

  10. 【Android】android:ellipsize的使用以及一个点解决方法

    EidtText和textview中内容过长的话自动换行,使用android:ellipsize与android:singleine可以解决,使只有一行. EditText不支持marquee 用法如 ...