正向代理与反向代理概述
正向代理:
定义:正向代理位于客户端和目标服务器之间,客户端的请求首先发送到代理服务器,然后由代理服务器转发到目标服务器,最后将目标服务器的响应返回给客户端。
作用:正向代理可以隐藏客户端的真实IP地址,同时可以进行一些安全控制,如访问控制、内容过滤等。
反向代理:
定义:反向代理位于服务器端,客户端的请求直接发送到反向代理服务器,然后由反向代理服务器根据配置将请求转发到后端的一个或多个服务器上,最后将后端服务器的响应返回给客户端。
作用:反向代理可以负载均衡、提高安全性、缓存静态内容等。
Nginx反向代理的配置语法
Nginx 的反向代理功能是通过 ngx_http_proxy_module 模块实现的。这个模块在安装 Nginx 的时候默认就已经包含在内了。以下是一些在配置 Nginx 反向代理时常用的指令及其说明。
proxy_pass
语法 | proxy_pass URL |
---|---|
默认值 | 无默认值 |
位置 | location块 |
说明 | 将请求转发到指定的URL |
该指令用来设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。
URL:为要设置的被代理服务器地址,包含传输协议(http,https://)、主机名称或IP地址加端口号、URI等要素。
例子:访问192.168.101.23后将服务跳转到192.168.101.18
192.168.101.23nginx配置
proxy_server
server {
listen 8082;
server_name localhost;
location / {
proxy_pass http://192.168.101.18;
}
}
在 192.168.101.18的index.html添加标识
浏览器访问测试
斜杠的问题
如果不加斜杠访问会提示错误
演示:
proxy_server
server {
listen 8082;
server_name localhost;
location server {
proxy_pass http://192.168.101.18;
}
}
路径不能正常访问
到 http://192.168.101.18:85/
后端服务器响应:
假设后端服务器 192.168.101.18:85 返回一个重定向响应,响应头包含 Location: http://192.168.101.18/some/path。
Nginx 修改重定向响应:
根据 proxy_redirect 指令,Nginx 将 Location 头从 http://192.168.101.18/some/path 修改为 http://192.168.101.23:8080/some/path。
客户端接收到响应:
客户端收到 Nginx 修改后的重定向响应,并访问 http://192.168.101.23:8080/some/path,而不是直接访问 http://192.168.101.18/some/path。