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

来源:互联网 发布:日本剪发多少钱 知乎 编辑:程序博客网 时间:2024/06/14 05:51

1. nginx (forward)

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

wget http://www.openssl.org/source/openssl-0.9.8zg.tar.gzwget http://zlib.net/zlib-1.2.8.tar.gzwget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gzwget http://nginx.org/download/nginx-1.8.0.tar.gzcd penssl-1.0.1p./configure & make & make installcd ../cd zlib-1.2.8./configure & make & make installcd ../cd pcre-8.37./configure & make & make installcd ../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.1pmakemake install

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;        }    }

对于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-develyum -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.gzwget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gztar -xzvf ss5-3.8.9-6.tar.gzcd ss5-3.8.9./configuremakemake install

修改配置文件

    vi /etc/opt/ss5/ss5.conf    auth 0.0.0.0/0 – -    改为    auth 0.0.0.0/0 – u    permit – 0.0.0.0/00.0.0.0/0 – – – – -    改成为    permit u 0.0.0.0/00.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 端口即可

使用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 shadowsocks

CentOS:

yum install m2crypto python-setuptools easy_install pip pip install shadowsockspip list | grep sh

vi /etc/shadowsocks.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     }

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

ssserver -c /etc/shadowsocks.jsonssserver -c /etc/shadowsocks.json -d startssserver -c /etc/shadowsocks.json -d stop

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

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

客户端:
Windows shadowsocks-gui

OS X ShadowsocksX / GoAgentX / shadowsocks-gui

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

Android shadowsocks-android

OpenWRT shadowsocks-libev / shadowsocks-tiny

REF:

  • https://github.com/shadowsocks/shadowsocks/wiki/%E7%94%A8-Supervisor-%E8%BF%90%E8%A1%8C-Shadowsocks

  • http://www.switchysharp.com/shadowsocks.html

0 0