代理是在内部应用程序和外部客户端之间的服务器,将客户端请求转发到相应的服务器。Nginx 的反向代理服务器是代理服务器位于私有网络的防火墙后面,将客户端请求发送到相应的后端服务器。
反向代理服务器的用途
负载平衡:反向代理服务器可以充当驻留在我们后端服务器前面的交通警察,并以提高速度和容量利用率的方式在一组服务器之间分配客户端请求,同时确保没有任何服务器过载。如果服务器未启动,则负载平衡器会将流量重定向到其余的在线服务器。
Web 加速: Nginx 反向代理用于压缩出站和入站数据,以及缓存常见请求的内容,这两者都加快了客户端和服务器之间的流量流动。
安全性和匿名性:我们可以拦截前往我们后端服务器的客户端的请求,通过这样做,反向代理服务器可以保护他们的身份并作为对安全攻击的额外防御。
将请求传递给代理服务器
当 NGINX 服务器代理请求时,它将请求发送到指定的服务器,获取响应,并将其发送回客户端。可以使用指定的协议向 HTTP 服务器或非 HTTP 服务器发送代理请求。支持的协议包括 FastCGI、uwsgi、SCGI 和 Memcached。
要将请求传递到 HTTP 代理服务器,使用 proxy_pass 指令。例如:
location /some/path/ { proxy_pass http://www.example.com/link/; }
要将请求传递到非 HTTP 代理服务器,请使用适当的 **_pass 指令:
- fastcgi_pass:将请求传递给 fastCGI 服务器。
- uwsgi_pass:将请求传递给 uwsgi 服务器。
- scgi_pass:将请求传递给 SCGI 服务器。
- memcached_pass:将请求传递给 memcached 服务器。
反向代理实例一
实现效果:使用 Nginx 反向代理,访问 http://local.runoops.com 直接跳转到 https://runoops.com:443。
配置代码:
server {
listen 80;
server_name local.runoops.com;
location / {
root html;
index index.html index.htm;
proxy_pass https://runoops.com:443;
}
}
hosts 添加虚拟主机配置:
127.0.0.1 local.runoops.com
如上配置,我们监听 80 端口,访问域名为 http://local.runoops.com(不加端口号时默认为 80 端口),故访问该域名时会跳转到 https://runoops.com:443 路径上。
此处的意思为:nginx 反向代理服务监听 local.runoops.com 的80端口,如果有请求过来,则转到proxy_pass配置的对应服务器上,仅此而已。
实验结果:
分享笔记