根据 该文章 使用以下配置即可正向代理
server {
resolver 114.114.114.114;
listen 80;
location / {
proxy_pass http://$host$request_uri;
}
}
server {
resolver 114.114.114.114;
listen 443;
location / {
proxy_pass https://$host$request_uri;
}
}
使用即
curl -x http://[ip]:80 www.baidu.com
curl -x http://[ip]:443 www.reddit.com
由于想加入密码, 于是加入 http basic 验证配置
server {
...
auth_basic "auth_basic";
auth_basic_user_file /data/http_basic_auth.txt;
...
}
而使用只能这样
curl -u 'user:pass' -x http://[ip]:443 www.reddit.com
问:
如上的配置, 是不是意味着 http basic 验证的部分同样会转发给将要代理的站点
该配置与一般的 curl -x http://[user]:[pass]@[ip]:[port] https://www.reddit.com
有何不同,nginx 是否也能配置成这样?
1
love 2021 年 2 月 12 日
我记得拿 nginx 做代理软件用是行不通的,具体哪里不好忘记了,只记得一开始似乎用起来没问题,然后马上就发现解决不了的痛点了
|
2
coolcoffee 2021 年 2 月 12 日
basic auth 是会写在 Authorization 里面的,你试下 proxy_pass Authorization "",覆盖掉原来的值试试。
|
4
love 2021 年 2 月 12 日
@zhoudaiyu 也许和打开 https 网站有关,难道是打开 http 重定向到 https 的网址不行吗,记不清了,总之有坑,不如就用专用的代理软件如 gost 了
|
5
ryd994 2021 年 2 月 13 日 https 网站不能用 nginx 代理。HTTPS 需要使用 CONNECT,nginx 不支持这个。这篇文章根本就是放屁。HTTPS 连证书都没有,而且你也不可能有对面站点的私钥。没有私钥,也不植入 CA,就算不是 NGINX,也不可能得知 URI 。
代理验证的事情,正规的代理软件都有正常的解决办法。为什么用 Nginx ? Squid 不好吗? HTTP basic 验证实际上就是把用户名和密码 base64 后加到 Authorization header 里。所以你这样用的话,确实是会被传递到对面服务器的。而且在对面站点本身就使用验证的情况下,无法使用。 正规代理鉴权用的是 Proxy-Authorization header 。 |
6
ryd994 2021 年 2 月 13 日
另外,nginx 现在支持 SNI 了,做反向代理还可以用 SNI 信息。
但是,即使如此,你也没法把 nginx 当作正向代理用。 |
7
sockball07 OP @coolcoffee #2 那看来确实是这么个道理 而且如果对面站点使用了 Authorization 就无效了( 5 楼也有提到)
@ryd994 #5 那为什么根据配置 使用 443 的话 HTTPS 网站也能代理访问呢... |
8
ryd994 2021 年 2 月 13 日
|
9
sockball07 OP @ryd994 #8 试过了 确实用上了...
|
10
Lax 2021 年 2 月 15 日
这仍然是个反向代理
|