nginx 正向代理与反向代理
一.介绍
反向代理:让Internet上的用户可以访问局域网内的资源,中间设置一个代理服务器,如下所示,红色圈是指局域网内的站点(myweb站点是我们的站点,例如iis)。箭头不能反过来
正向代理:客户端(我们代理客户端)访问Internet上的站点。中间设置一个代理服务器,如下所示,红色圈是指局域网内的客户端(我们的客户端)。箭头不能反过来。
总结:
正向代理是指:我们代表局域网客户端,向Internet上获取资源,中间正向代理。
反向代理是指:我们代表局域网服务端,Internet上的客户端请求资源,中间使用反向代理。
反向代理是最常见的重要功能之一,应用广泛,涉及的配置指令比较多。ngx提供的反向代理也是比较高效的,它能同时接收客户端连接由worker_processes指令和worker_connections指令决定。
反向代理与正向代理都有http块,server块或者location块。区别是单独配置server块用来反向代理或正向代理。
二.反向代理的基本设置的21个指令
讲最重要的一个proxy_pass指令
1.proxy_pass指令
被代理服务器的地址(分发到如:IIS),可以是主机名称,ip地址加端口号等形式。语法结构为
proxy_pass url;
传输协议通常是http://,或https://。例如
proxy_pass http://www.myweb.name/uri;
proxy_pass http://localhost:8080/uri;
proxy_pass http://192.168.2.211:8080/uri;
如果被代理服务器是一组服务器的话,可以用upstream指令配置后端服务器组,做高可用负载分发,例如:
upstream proxy_svrs { server http://192.168.1.1:8001; server http://192.168.1.2:8001; server http://192.168.1.3:8001; } server { ... listen 80; server_name www.myweb.name; location / { proxy_pass proxy_svrs; } }
注意一点:在服务器组内指明了传输协议 http://, 在proxy_pass指令中就不需要指明了。反之如果服务器组内没有https://,那么 在proxy_pass指令中就需要指明,如下所示:
upstream proxy_svrs { server 192.168.1.1:8001; server 192.168.1.2:8001; server 192.168.1.3:8001; } server { ... listen 80; server_name www.myweb.name; location / { proxy_pass http://proxy_svrs; } }
当客户端访问http://www.myweb.name时,就会进入location中。再看一个示例:
server { ... listen 80; server_name www.myweb.name;
location /server/
{
proxy_pass http://proxy_svrs01;
}
location /
{
proxy_pass http://proxy_svrs; }
}
当客户端访问http://www.myweb.name/server时,就会匹配location /server/ 块中。
参考
Nginx高性能Web服务器详解 第7章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2019-01-05 asp.net core 系列 2 启动Startup类介绍