nginx实现请求转发

发布时间 - 2026-01-11 02:08:26    点击率:

反向代理适用于很多场合,负载均衡是最普遍的用法。

nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理。

nginx 反向代理官方文档: NGINX REVERSE PROXY

当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较常见的是以 URI 来转发)转发到对应的web服务器上。

例如有 webmail , webcom 以及 webdefault 三个服务器分别运行在 portmail , portcom , portdefault 端口,要实现从80端口同时访问这三个web服务器,则可以在80端口运行 nginx, 然后将 /mail 下的请求转发到 webmail 服务器, 将 /com下的请求转发到 webcom 服务器, 将其他所有请求转发到 webdefault 服务器。

假设服务器域名为example.com,则对应的 nginx http配置如下:

http {
 server {
   server_name example.com;
 
   location /mail/ {
     proxy_pass http://example.com:protmail/;
   }
 
   location /com/ {
     proxy_pass http://example.com:portcom/main/;
   }
 
   location / {
     proxy_pass http://example.com:portdefault;
   }
 }
}
 

以上的配置会按以下规则转发请求( GET 和 POST 请求都会转发):

将 http://example.com/mail/ 下的请求转发到 http://example.com:portmail/
将 http://example.com/com/ 下的请求转发到 http://example.com:portcom/main/
将其它所有请求转发到 http://example.com:portdefault/

需要注意的是,在以上的配置中,webdefault 的代理服务器设置是没有指定URI的,而 webmail 和 webcom 的代理服务器设置是指定了URI的(分别为 / 和 /main/)。

如果代理服务器地址中是带有URI的,此URI会替换掉 location 所匹配的URI部分。

而如果代理服务器地址中是不带有URI的,则会用完整的请求URL来转发到代理服务器。

官方文档描述:

If the URI is specified along with the address, it replaces the part of the request URI that matches the location parameter.
If the address is specified without a URI, or it is not possible to determine the part of URI to be replaced, the full request URI is passed (possibly, modified).

以上配置的转发示例:

http://example.com/mail/index.html -> http://example.com:portmail/index.html
http://example.com/com/index.html -> http://example.com:portcom/main/index.html
http://example.com/mail/static/a.jpg -> http://example.com:portmail/static/a.jpg
http://example.com/com/static/b.css -> http://example.com:portcom/main/static/b.css
http://example.com/other/index.htm -> http://example.com:portdefault/other/index.htm


# nginx  # 请求转发  # 转发post请求  # nginx转发https请求  # nginx做代理转发前端请求到后端的代码示例  # 使用nginx如何实现请求转发的功能  # nginx的请求转发配置过程  # Nginx请求转发配置指南  # 详解Nginx 利用代理转发请求示例  # nginx配置请求转发不生效的实现  # 代理服务器  # 的是  # 文档  # 多个  # 是指  # 适用于  # 能在  # 可以使用  # 分别为  # 则可  # 定了  # 这三个  # 很方便  # 则会  # 最流行  # 用完  # 需要注意  # 则对  # 一台主机  # 器上 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 原生JS实现图片轮播切换效果  Laravel怎么连接多个数据库_Laravel多数据库连接配置  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  b2c电商网站制作流程,b2c水平综合的电商平台?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  nginx修改上传文件大小限制的方法  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何用景安虚拟主机手机版绑定域名建站?  Laravel如何实现本地化和多语言支持?(i18n教程)  利用python获取某年中每个月的第一天和最后一天  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  如何在万网ECS上快速搭建专属网站?  Laravel如何实现用户密码重置功能?(完整流程代码)  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  javascript中的try catch异常捕获机制用法分析  如何在阿里云虚拟服务器快速搭建网站?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何破解联通资金短缺导致的基站建设难题?  Linux系统命令中tree命令详解  如何在阿里云通过域名搭建网站?  新三国志曹操传主线渭水交兵攻略  Laravel安装步骤详细教程_Laravel环境搭建指南  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel如何与Inertia.js和Vue/React构建现代单页应用  如何在宝塔面板创建新站点?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  如何自定义建站之星模板颜色并下载新样式?  如何用狗爹虚拟主机快速搭建网站?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  详解阿里云nginx服务器多站点的配置  百度浏览器如何管理插件 百度浏览器插件管理方法  如何在宝塔面板中创建新站点?  android nfc常用标签读取总结  Laravel如何使用.env文件管理环境变量?(最佳实践)  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全