电子邮件支持:cangyun2020@gmail.com

如何搭建属于自己的http代理服务器 正向代理HTTP/HTTPS

2022-04-20 21:24:58

利用Nginx来搭建HTTP正向代理[网上别人的方案]

起初折腾老半天,请求代理就是不出数据,后来查了下,原来正常情况下,利用Nginx来搭建仅支持http代理访问,想要代理请求SSL的话,需要Nginx编译安装 ngx_http_proxy_connect_module 模块才行。以宝塔面板操作过一遍,已失败告终。等待继续研究。这里就简单说下仅支持http的代理搭建操作。

资料:

ngx_http_proxy_connect_module 模块

https://github.com/chobits/ngx_http_proxy_connect_module

1,宝塔面板,已安装Nginx (我这里用的是Nginx-1.16)

2,可以直接在Nginx配置里设置,也可以通过新建一个站点,在站点配置里设置(推荐,下面图也是通过新建一个站点来设置的),并设置一个带端口的ip地址(这里也是你要设置的代理端口)。



3,在 server{ ... } 类中相应位置添加如下代码。
 resolver 114.114.114.114;
 resolver_timeout 5s;

 location / {
   proxy_pass $scheme://$host$request_uri;
   proxy_set_header Host $http_host;

    proxy_buffers 256 4k;
   proxy_max_temp_file_size 0;

   proxy_connect_timeout 30;

   proxy_cache_valid 200 302 10m;
   proxy_cache_valid 301 1h;
   proxy_cache_valid any 1m;
 }



4,此方法已经在面板的安全组中加了端口放行。若是在Nginx配置中设置的话,需要另外添加

使用squid搭建自己专属的http/https正向代理服务器

此方法相较于Nginx正向代理速度较慢些

还有一种tinyproxy,不过使用了一下稳定性不太稳定,就安装了下面的squid来使用

tinyproxy的配置很简单 如果要加账号密码验证的话 需要1.10.0版本以上.

1,shell 命令安装squid

yum install -y squid   // apt install squid
# 如果centos安装的话 后面如果出现了一些问题 可以尝试安装一下  yum install -y squid-common 或者squid-helper 这两个有一个是对的 因为我没有出错 也不大记得是哪一个

2,配置 squid

会命令语句的,就直接用 vim 编辑下配置文件

vim /etc/squid/squid.conf

不会的直接拖出来编辑:【注意这个文件的权限是只有root账户才可以可读可写,拿出来的话建议修改一下权限】

因为我用的root账户 直接chmod 666 /etc/squid/squid.conf

然后拖出来编辑了

3,配置端口,以及设置下 允许访问所有地址 为 allow (默认是deny,设置用户密码验证的话,保持默认deny)

# 允许访问所有地址,默认是 deny,这个要主动改一下
http_access allow all 
​
# Squid normally listens to port 3128
# 代理服务器端口
http_port 9999     《== 这个设置在1600行 上下位置

4,启动代理

service squid start

5,其他shell命令

两种指令都可以===》

# 启动
service squid start   //  systemctl start squid 
# 停止
service squid stop   //  systemctl stop squid 
# 重启 
service squid restart   //  systemctl restart squid 
# 重新加载配置文件
service squid reload    // systemctl reload squid 
# 查看是否正在运行
service squid status    // systemctl status squid

全部命令:{start|stop|status|reload|force-reload|restart|condrestart|try-restart|probe}

6,到了这其实就算完成了,如果要设置用户密码验证的话,就继续。

①,在 http_access deny all 上方添加 如下代码

记住需要先设置以下问题:在shell里面敲下面的东西后会输出账号:密码,然后会多一个文件/etc/squid/htpasswd

printf "账号:$(openssl passwd -crypt '密码')\n" | sudo tee -a /etc/squid/htpasswd

然后下面这里就可以加入这些设置了==》

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user

注意 : 上面第一句在重启的时候可能会报错 如果报错 可以修改成下面这句

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd


image-20200805103330108.png

如果需要配置限制什么ip访问的话 可以编辑一个 /etc/squid/allowd_ips.txt 里面只需要写上可以访问的外网ip就好啦,如图

image-20200805104641378.png

然后把上面我注释的写上去就好了 我没有写 方便复制我写下面了,

acl allowed_ips src "/etc/squid/allowed_ips.txt"
http_access allow allowed_ips
http_access deny all
如果限制了IP 最后一定要紧接着加上 http_access deny all 这一句,因为我加了密码验证所以我上面删除掉了,也可以把 deny 改成 allow

设置这些的行数可以参考一下左边行数,定位编辑的位置

②,设置高匿,文件末尾加上如下代码

image-20200805103449066.png
#文件最后加上  高匿配置   方便复制的文件
request_header_access X-Forwarded-For deny all
request_header_access From deny all
request_header_access Via deny all

修改了之后要使用的话 都需要重启

systemctl restart squid