搭建自己的代理服务 proxy nginx squid ss5 s(shadow)s(socks)

  • 4090

1. nginx (forward)

nginx自己熟悉,经常用来做负载均衡的反向代理, 这里搭建一个正向代理(forward)

wget http://www.openssl.org/source/openssl-0.9.8zg.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
wget http://nginx.org/download/nginx-1.8.0.tar.gz

cd penssl-1.0.1p
./configure & make & make install
cd ../
cd zlib-1.2.8
./configure & make & make install
cd ../
cd pcre-8.37
./configure & make & make install
cd ../
cd nginx-1.8.0
./configure --prefix=/data/nginx --with-http_ssl_module --with-pcre=../pcre-8.37 --with-zlib=../zlib-1.2.8 --with-openssl=../openssl-1.0.1p
make
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

nginx/conf/nginx/nginx.conf

server {
        resolver 8.8.8.8;
        listen  9088;
        access_log  logs/proxy.log  main;
        location / {
              proxy_pass      http://$host$request_uri;
              proxy_set_header Host $http_host;
              proxy_buffers   256 4k;
              proxy_max_temp_file_size        0k;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

对于http网站还行,但是https访问就不行了。作为 web server nginx 当然是可以处理 ssl 的,但作为 proxy 则是不行的。因为 nginx 不支持 CONNECT,收到 “CONNECT /:443 HTTP/1.1” 后会报一个包含“client sent invalid request while reading client request line,” 的错误。因为 CONNECT 是正向代理的特性,据说也没有计划支持。nginx作者建议使用squid。

2. squid

安装配置完成后,打开http端口即可,使用squid访问http网站也没问题,但是在配置https时没有成功,最后决定使用ss5。

REF: 
http://www.cnblogs.com/mchina/p/3812190.html

3. ss5

http://ss5.sourceforge.net/

yum -y install pam-devel openldap-devel openssl-devel
yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel 

#wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-6/ss5-3.8.9-6.tar.gz
wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
tar -xzvf ss5-3.8.9-6.tar.gz
cd ss5-3.8.9
./configure
make
make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

修改配置文件

    vi /etc/opt/ss5/ss5.conf
    auth 0.0.0.0/0 – -
    改为
    auth 0.0.0.0/0 – u

    permit – 0.0.0.0/0 – 0.0.0.0/0 – – – – -
    改成为
    permit u 0.0.0.0/0 – 0.0.0.0/0 – – – – -

    cat /etc/opt/ss5/ss5.passwd
    #用户  密码
    e.g:
    `echo "myname a123456" > /etc/opt/ss5/ss5.passwd`

    #启动socket 5
    chmod u+x /etc/rc.d/init.d/ss5
    chkconfig --add ss5 //可选
    chkconfig ss5 on //可选
    service ss5 start

    #查看是否启动
    netstat -lntp  | grep ss5

    然后在 aws 安全组管理中打开 1080 端口即可
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

使用ss5终于可以访问http+https了,但是有一个https网站访问不了,还没找到原因,然后换用了ss。

4. Apache Traffic Server

文档在官网,很详尽: 
https://docs.trafficserver.apache.org/en/latest/getting-started/index.en.html#configuring-a-forward-proxy

5. s(shadow)s(socks)

Debian / Ubuntu:

apt-get install python-pip python-m2crypt
pip install *
  • 1
  • 2

CentOS:

yum install m2crypto python-setuptools
easy_install pip
pip install *
pip list | grep sh
  • 1
  • 2
  • 3
  • 4

vi /etc/*.json

    {
        "server":"0.0.0.0",
        "server_port":8388,
        "local_address": "127.0.0.1",
        "local_port":11080,
        "password":"12651321",
        "timeout":300,
        "method":"aes-256-cfb",
        "fast_open": false,
        "workers": 1
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如果要在后台运行, 请使用 supervisor。 
从 * 2.6 开始,你可以直接在后台运行 *,无需 Supervisor 。 这样省掉了 Supervisor 进程占用的内存。

ssserver -c /etc/*.json
ssserver -c /etc/*.json -d start
ssserver -c /etc/*.json -d stop
  • 1
  • 2
  • 3
  • 4

这个配置好后最后终于可以正常使用所有的http+https了,如果自己没有AWS机器搭建可以先使用 免费的(有流量限制)】 , 下载地址:https://pypi.python.org/pypi/*/2.8.2, https://*.org/en/download/clients.html,文档:https://github.com/*/*/wiki, 在推荐个直接F(an)Q(aing)的:https://github.com/get*/forum

现在注册AWS可以获取12个月的免费低配置服务(EC2),作为代理使用足够了,不要注册AWS中国,而是切换成英文版本,注册英文的,然后选择非大陆区域(美国、新加坡、日本都可以),然后在新建ec2并安装ss服务端即可使用。

客户端: 
Windows *-gui

OS X *X / *X / *-gui

iOS Mobile* (需要越狱) / *-iOS (一个自带代理的浏览器)

Android *-android

OpenWRT *-libev / *-tiny

REF:

版权声明:本文为博主原创文章,未经博主允许不得转载。
上一篇:php包含那点事情[WOOYUN]


下一篇:ASP.NET MVC学习之Log4Net配置(日志记录)