http正向代理和反向代理笔记

proxy总结

NGINX可以做正向代理,也可以做反向代理,参见 Nginx HTTPS的正反向代理测试,但配置有些复杂,
goproxy 可以做正向代理,也可以做反向代理,配置简单。

goproxy反向代理


./proxy rhttp -c aliyun.txt  --daemon --log aliyun.log --forever --debug

[[host]]
bind="http://demo.com/"
target="http://mirrors.aliyun.com/ubuntu/"
upstream="mirrors.aliyun.com:80"

注意upstream一定要加上端口号,如果不加端口号,会出现 502 bad gateway 的错误。

goproxy常见问题

问:什么是http代理?https代理?
答:无论是http代理还是https代理,都支持同时代理访问http和https网站。
http代理和https代理里的http和https和你访问的网站是否是http(https)是无关的。
http代理:客户端和代理服务器之间是tcp传输数据。
https代理:客户端和代理服务器之间是tls加密传输数据。
http代理是使用最广泛的代理,大部分客户端都不支持https代理。

问:goproxy的http代理是http代理还是https代理?
答:goproxy支持http代理,https代理,https双向认证代理。
至于提供什么类型的代理,是参数-t决定的:
http代理 :-t tcp
https代理:-t tls --local-tls-single,服务端需要设置tls证书。
https双向认证代理:-t tls,服务端和客户端都需要设置一样的tls证书。

2级反向代理使用goproxy, 测试成功

2级反向代理使用goproxy, 测试成功

用nginx做两级反向代理, 访问 https://mirrors.aliyun.com/ubuntu/ , 在公司环境上失败,没时间调试,感觉nginx的配置复杂得多。

https 下 多级nginx 反向代理设置

NGINX 二级代理配置以及测试

一级:

http{

   server {
        listen       80;
        server_name  rproxy1.com;
   
        location / {
                proxy_pass  https://mirrors.aliyun.com;
                  # 保留原始客户端地址
                proxy_set_header  X-Real-IP $remote_addr;
                # 把请求头中的X-Forwarded-For与$remote_addr用逗号合起来,如果请求头中没有X-Forwarded-For则$proxy_add_x_forwarded_for为$remote_addr
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                # 请求头设置传输协议
                proxy_set_header  X-Forwarded-Proto $scheme;
        }
   }

}

二级:

http{

   server {
        listen       80;
        server_name  rproxy2.com;

        location / {
                proxy_pass  http://rproxy1.com;
                  # 保留原始客户端地址
                proxy_set_header  X-Real-IP $remote_addr;
                # 把请求头中的X-Forwarded-For与$remote_addr用逗号合起来,如果请求头中没有X-Forwarded-For则$proxy_add_x_forwarded_for为$remote_addr
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                # 请求头设置传输协议
                proxy_set_header  X-Forwarded-Proto $scheme;
        }
   }

}

测试,成功。

[root@anolis882 goproxy]# wget http://rproxy2.com/ubuntu/ls-lR.gz 
--2025-04-05 18:10:22--  http://rproxy2.com/ubuntu/ls-lR.gz
Resolving rproxy2.com (rproxy2.com)... 192.168.59.131
Connecting to rproxy2.com (rproxy2.com)|192.168.59.131|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31857802 (30M) [application/octet-stream]
Saving to: ‘ls-lR.gz.1’

ls-lR.gz.1                                100%[=====================================================================================>]  30.38M  2.12MB/s    in 14s     

2025-04-05 18:10:37 (2.12 MB/s) - ‘ls-lR.gz.1’ saved [31857802/31857802]

nginx 配置学习

https://github.com/cym1102/nginxWebUI

https://www.cnblogs.com/AllenWongFly/p/17323718.html

https://github.com/dunwu/nginx-tutorial

https://github.com/trimstray/nginx-admins-handbook

https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN

通过nginx将https协议反向代理到http协议请求上

posted @ 2025-04-05 18:55  todaygood  阅读(101)  评论(0)    收藏  举报