1.什么是 proxy_pass
proxy_pass是nginx提供的一个指令,用于将请求转发到指定的后端服务器。它以反向代理的方式工作,将客户端请求直接转发给后端服务器,实现负载均衡、静态文件缓存、反向代理等场景。
2.使用格式
location / {
proxy_pass http://backend_server;
}
location指令指定需要转发的请求路径,proxy_pass指定后端服务器的地址和端口号。其中,backend_server可以是一个域名、IP地址,也可以是一个nginx的upstream集群。
3.常用选项
除了proxy_pass,还有一些常用的选项可以用于优化反向代理的效果。
1)proxy_set_header
用于添加HTTP请求头信息。
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
2)proxy_connect_timeout
用于设置与后端服务器建立连接的超时时间。
location / {
proxy_pass http://backend_server;
proxy_connect_timeout 2s;
}
3)proxy_read_timeout
用于设置接收后端服务器响应的超时时间。
location / {
proxy_pass http://backend_server;
proxy_read_timeout 5s;
}
4)proxy_send_timeout
用于设置发送请求到后端服务器的超时时间。
location / {
proxy_pass http://backend_server;
proxy_send_timeout 2s;
}
5)proxy_cache
用于开启nginx反向代理的缓存机制,减少对后端服务器的请求次数。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
server {
location / {
proxy_cache my_cache;
proxy_pass http://backend_server;
}
}
4.注意事项
1)一般使用proxy_pass时,都需要添加proxy_set_header指令,否则后端服务器无法获取客户端的真实IP地址。
2)在开启proxy_cache缓存时,一定要确保后端服务器输出的内容是稳定的,否则在缓存过程中会出现异常情况。
3)使用代理服务器时,应适当调整Nginx的工作进程数,避免瓶颈出现。