我的编程空间,编程开发者的网络收藏夹
学习永远不晚

抛弃Nginx使用nodejs做反向代理服务器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

抛弃Nginx使用nodejs做反向代理服务器

时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外,购买了一个小型的 Win 03 VPS 使用着。在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如果是一个 PHP、一个 ASP、 一个 JSP 的三种类型的服务端项目并存着,该怎么分配唯一的 80 端口呢?因为商业 WWW 网站的话,往往只能占用 80 端口,——当然,如果只是做服务的话,如接口之类的,使用其他端口就不会与 80 端口冲突了。许多开发者都会面临到 80 端口这个问题,并且实际情况会受到成本的限制。因为单独为一个项目就买一个 VPS,也不太经济、不太合算,管理起来也不方便。于是,我们就应该好好考虑一下,怎么在提供一个 80 端口的情况下,分发到多种服务端那里去,让不同的主机执行各自的 Web 项目。

亲,那这项需求我们说可以实现吗?是的,这并不是什么“神奇的技术”,也不是什么复杂的技术。不知你是否有了解,网络服务中的“反向代理(Reverse Proxy)”,其中的一个功能就是可以完成端口的分发的。我们不妨以域名为路由分发:凡是 AA.com 域名请求的,分发到 PHP 82 端口执行;凡是 BB.com 域名请求的,分发到 ASP 83 端口执行;…… 如此类推。当然这里的端口只说说明用而已,您可以任意配置,反正就是从 80 端口接收回来的请求,先作一次处理,进而分发。反向代理,通俗地讲,就是左手转右手而已。

每当提起反向代理器,人们通常一想到的就是 Nginx,但是今天我们暂时忽略大名鼎鼎的 Nginx,采用同样也是使用单线程、事件循环的服务端小弟——Nodejs 来达成。首先 Node 采用 JS 作服务端编程,而不是 Nginx 写配置或 Lua,比较符合我的味口,其次自己对 Node 也比较熟悉,配置各方面什么的更为顺手。

完成该项功能的是 node-http-proxy 包。下载、安装请键入:


npm install http-proxy

安装完毕后,新建一个 proxy.js 文件,输入:


var http = require('http'), httpProxy = require('http-proxy');

// 新建一个代理 Proxy Server 对象
var proxy = httpProxy.createProxyServer({});

// 捕获异常
proxy.on('error', function (err, req, res) {
 res.writeHead(500, {
 'Content-Type': 'text/plain'
 });
 res.end('Something went wrong. And we are reporting a custom error message.');
});

// 另外新建一个 HTTP 80 端口的服务器,也就是常规 Node 创建 HTTP 服务器的方法。
// 在每次请求中,调用 proxy.web(req, res config) 方法进行请求分发Create your custom server and just call `proxy.web()` to proxy
// a web request to the target passed in the options
// also you can use `proxy.ws()` to proxy a websockets request
//
var server = require('http').createServer(function(req, res) {
 // You can define here your custom logic to handle the request
 // and then proxy the request.
 var host = req.url;
 host = url.parse(host); host = host.host;
 
 console.log("host:" + req.headers.host);
 console.log("client ip:" + (req.headers['x-forwarded-for'] || req.connection.remoteAddress));
 
 proxy.web(req, res, { target: 'http://localhost:8080' });
});

console.log("listening on port 80")
server.listen(80);

若说使用代理服务器的代价,可能就是会比不用消耗多的资源,消耗多的 CPU 运算罢了。

使用问题:不能指定文件夹 proxy.web(req, res, { target: 'http://gimoo.net:81/foo/' });

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

抛弃Nginx使用nodejs做反向代理服务器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

抛弃Nginx使用nodejs做反向代理服务器

时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外,购买了一个小型的 Win 03 VPS 使用着。在使用的过程中,面临一个问题,就是同一类型的服务端环境还好——但如果是一个 PHP、一个 ASP、 一个 J
2022-06-04

阿里云服务器nginx反向代理

一、工作原理反向代理是一种基于代理的网络服务,它可以将服务器上的请求转发到目标主机上。反向代理服务器可以使用各种技术实现,如HTTP、FTP、Telnet、SSH等。反向代理服务器的作用是将目标主机的请求转发到反向代理服务器上,并从反向代理服务器接收来自目标主机的请求。在阿里云服务器nginx反向代理中,使用了阿里云的
2023-10-27

阿里云服务器做反向代理

反向代理技术是指将自己的网站与阿里云服务器进行交互,以实现在阿里云服务器上访问对方网站的功能。使用反向代理技术可以实现用户只需在自己的网站上嵌入一段代码,即可访问对方的网站。这段代码可以是JavaScript、HTML5或者CSS3,然后将自己的网站内容放在HTML5或者CSS3中,这样就可以实现用户在自己的网站上访问
阿里云服务器做反向代理
2023-10-28

阿里云服务器nginx反向代理怎么用

安装nginx反向代理软件首先,我们需要在阿里云控制台下载并安装nginx反向代理软件。这个软件可以从阿里云官网上下载,安装完成后会自动连接到阿里云服务器。配置nginx反向代理我们需要配置nginx反向代理软件的IP地址、端口号、协议类型、认证方式等参数。可以使用命令行工具进行配置,例如ssh-p4880ssh到指定
2023-10-27

阿里云服务器做反向代理怎么做

首先,我们需要了解ProxyDefense和ServerAdmissionManagement的原理。ProxyDefense是阿里云提供的一种反向代理工具,它可以通过设置代理IP地址和端口,来访问被代理的服务器。而ServerAdmissionManagement是一种监控代理行为的工具,它可以通过监控代理的访问行为
阿里云服务器做反向代理怎么做
2023-10-28

Nginx反向代理服务器怎么配置与应用

在Nginx中配置反向代理服务器非常简单,只需在nginx.conf文件中添加一些配置即可实现。以下是一个简单的配置示例:server {listen 80;server_name example.com;location / {prox
Nginx反向代理服务器怎么配置与应用
2024-05-06

阿里云服务器做反向代理怎么弄

首先,需要了解阿里云的反向代理机制。在阿里云的反向代理中,我们可以使用Nginx自带的Proxy-Proxy或者第三方代理,这些代理是通过HTTPProxyHost和HTTPProxyClient之间进行通信的,可以在不暴露原始代理IP地址的情况下实现反向代理。在实现反向代理时,需要使用静态资源(如POC、Fork、R
2023-10-27

阿里云服务器nginx反向代理怎么设置

一、阿里云服务器nginx反向代理的配置阿里云服务器的配置首先,在阿里云服务器上配置nginx反向代理,可以使用以下命令:$confignginx_proxyreverse=42其中,$config是阿里云服务器的配置文件,需要根据实际情况进行修改。反向代理的应用在实际应用中,可以使用反向代理来处理来自阿里云服务器的请
2023-10-27

Nginx反向代理和proxy_cache缓存如何搭建CDN服务器

这篇文章将为大家详细讲解有关Nginx反向代理和proxy_cache缓存如何搭建CDN服务器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。碰到问题:移动用户访问web服务器www.osyunwei.co
2023-06-16

使用“反向代理服务器”的优点是什么

反向代理服务器的优势包括:1、提高服务器安全性;2、负载均衡;3、加速网页加载;4、允许多服务器共享同一IP;5、隐藏服务器信息;反向代理服务器的使用可以显著增强服务器性能,提升网络访问速度,保护服务器免受攻击,大大提高服务器的安全性。
使用“反向代理服务器”的优点是什么
2023-10-29

如何搭建keepalived+nginx+httpd+dns高可用双主反向代理服务器

如何搭建keepalived+nginx+httpd+dns高可用双主反向代理服务器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.rs服务器安装httpd,ip为:192.
2023-06-05

nginx反向代理:如何将“accept-encoding”头传递给后端服务器

要将“accept-encoding”头传递给后端服务器,您可以使用nginx的proxy_set_header指令。在nginx的配置文件中,找到您配置反向代理的位置块,并添加以下指令:```location / {proxy_pass
2023-09-17

怎么使用云服务器做代理

使用云服务器做代理是指将应用程序请求转发给云服务器的过程。以下是一些使用云服务器做代理的方式:使用Socket编程接口SocketAPI是一种用于将应用程序请求发送到云服务器上的标准接口。在使用SocketAPI时,可以使用云服务器提供的接口来实现代理。例如,如果您要向云服务器发送代理请求,可以向云服务器注册并设置代理服务器的地址和端口号,然后将请求转发给云服务器。使用WebSocket
2023-10-26

ubuntu服务器部署gitlab docker并配置nginx反向代理https访问的过程解析

本篇文章详细阐述了在Ubuntu服务器上部署GitLabDocker并配置Nginx反向代理以支持HTTPS访问的步骤。首先部署GitLabDocker容器,然后配置Nginx反向代理服务器块,最后在GitLab容器内启用HTTPS。通过这些步骤,您可以安全地通过HTTPS访问您的GitLab实例。
ubuntu服务器部署gitlab docker并配置nginx反向代理https访问的过程解析
2024-04-02

编程热搜

目录