Pav*_*rov 2 nginx proxy https privoxy
我需要将 nginx 设置为 https 代理,但这不起作用:
$ export https_proxy="http://127.0.0.1:8081"
$ curl https://example.com
curl: (56) Received HTTP code 400 from proxy after CONNECT
Run Code Online (Sandbox Code Playgroud)
我的nginx.conf:
server {
listen 8081;
location / {
proxy_pass http://some.proxy.com:3128;
proxy_set_header Host $http_host;
}
}
Run Code Online (Sandbox Code Playgroud)
这里有一个误解。http 代理有两种类型,它们是两种完全不同的动物:反向代理和正向代理。不要混合它们。
转发代理对于客户端操作系统(例如export https_proxy)或浏览器是可见的。客户端知道它需要稍微不同地进行通信,并且转发代理服务器的行为与常规网络服务器不同。
反向代理几乎是一个普通的网络服务器,其行为对客户端来说是不可见的。一个 nginx 的例子是proxy_pass. 有一些肮脏的技巧可以以有限的方式使用反向代理作为正向http代理,但由于 CONNECT 动词,它根本不能作为正向https代理工作。
因此,转发代理最好称为“客户端代理”。反向代理是“服务器端代理”。(在我看来,正向/反向代理是一个可怕的术语。)
不要使用 nginx 作为转发代理。它旨在用作常规网络服务器或反向代理。
| 归档时间: |
|
| 查看次数: |
6045 次 |
| 最近记录: |