前言
通常情况下,客户端向Web服务器发送请求,Web服务器响应请求并返回数据。而在反向代理中,客户端的请求不直接发送到Web服务器,而是发送到反向代理服务器。反向代理服务器会将请求转发给真实的Web服务器,Web服务器响应请求并将数据返回给反向代理服务器,反向代理服务器再将数据返回给客户端。客户端认为它正在与反向代理服务器通信,但实际上是与真实的Web服务器通信
几个好玩的点
比较常见的当然是用于部署钓鱼,比起原生态的copy前端资源搭建web服务,进行跳转诱导,直接反向代理无疑要省心,具体可以参考:
钓鱼技巧-Nginx反向代理伪造页面
另一个玩法就是用来做代理,比如一个web页面你搭在了某个匿名服务器上面,需要一个跳板机取访问
最有意思的一个玩法,在于隐藏你实际想让对方访问到的url,这个用处非常多,结合场景可以绕过很多拦截策略
实现
通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
,之后添加配置:
server {listen 80;location / {proxy_pass http://your_backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}
在上面的配置中,你需要将http://your_backend
替换为你希望将流量代理到的后端服务器的URL或IP地址。
完成这些步骤后,保存并关闭文件。然后,你需要测试Nginx配置是否正确:
sudo nginx -t
如果没有错误,你将看到以下消息:
nginx: configuration file /etc/nginx/nginx.conf test is successful
然后,你可以重启Nginx以应用新的配置:
sudo systemctl restart nginx