配置示例
upstream gateway {
server 192.168.xx.xx;
}
server {
location ^~/api {
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_buffering off;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://gateway;
}
}
解读
这段配置是一个Nginx服务器的配置,用于反向代理请求并将其转发到名为"gateway"的后端服务器。下面是对每一行配置的解释:
location ^~/api {
:指定请求的URL路径匹配规则。这里使用了^~/api
表示以"/api"开头的URL路径。以这个规则匹配的请求将进行下面的配置处理。proxy_set_header Host $host;
:设置转发请求时的请求头中的"Host"字段为客户端请求的主机。proxy_set_header X-Real-IP $remote_addr;
:设置请求头中的"X-Real-IP"字段为客户端的真实IP地址。proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
:设置请求头中的"X-Forwarded-For"字段,用于记录客户端的原始IP地址。proxy_buffering off;
:禁用代理缓冲,确保代理服务器及时转发接收到的数据,而不是等待缓冲区满或超时。rewrite ^/api/(.*)$ /$1 break;
:重写匹配到的URL路径,将"/api/“后面的部分提取出来,并将其作为新的请求URL路径。例如,如果请求的URL是”/api/example",则重写后的URL将变为"/example"。proxy_pass http://gateway;
:指定请求转发的目标服务器地址为"http://gateway"。这里的"gateway"是后端服务器的名称或地址。
通过这段配置,当客户端发起以"/api"开头的请求时,Nginx服务器将转发该请求到后端的"gateway"服务器,并在转发过程中修改请求头的相关字段,同时对请求的URL进行重写。这样可以实现代理和转发请求的功能。