nginx反向代理流程以及具体执行过程


一、nginx反向代理流程

反向代理:使用代理服务器来接受internet上的连接请求,然后将请求转发给内部网络中的上游服务器,并将上游服务器得到的结果返回给请求连接的客户端,代理服务器对外表现就是一个web服务器。Nginx就经常拿来做HTTP反向代理服务器。
Nginx具有强悍的高并发高负载能力,所以一般会作为前端服务器直接向客户端提供静态文件服务。但是一些复杂、多变的业务不适合放Nginx上,一般会使用Apache、Tomcat等服务器来处理。因此,Nginx一般会作为静态web服务器与反向代理服务器,将不适合自己处理的请求转发给上游服务器处理。
在这里插入图片描述
Nginx代理服务器处理过程:
1.接受HTTP请求,将用户的请求(包括HTTP包体)完整的接受到Nginx服务器的磁盘或者内存中。
2.向上游服务器发起连接
3.将缓存的客户端请求转发到上游服务器

Nginx的这种转发方式与Squid等代理服务器的处理方式不同,Squid是一边接收客户端请求,一边将请求转发到上游服务器。相比之下 ,Nginx延长了一个请求处理的时间,并且增加了用于缓存请求内容的内存和磁盘空间。 但是Nginx有效的降低了上游服务器的负载,将压力放在了Nginx服务器上。

那么Nginx的这种机制是如何降低上游服务器的负载的呢?通常情况下,客户端与Nginx代理服务器走公网,代理服务器与上游服务器之间走内网。如果一边接受客户端请求,一般将请求转发到上游服务器的话,上游服务器需要长时间的保存这个连接,增加上游服务器的并发压力。但是如果是接受到完整请求之后,再转发给上游服务器的话,内网的速度更快,不需要那么长的时间保持连接,可以减低上游服务器的并发压力。

二、nginx反向代理具体执行过程

以访问:http://nginx.test.com为例:

1、当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 nginx.test.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块)
2、此时我们可以看到HTTP请求匹配到了server_name nginx.test.com;,这样接下来nginx就会在当前server块中匹配到 location / 。

3、接下来继续由nginx处理可以看到 location / { proxy_pass http://hellonginx; } ; 这就是进行反向代理处理,这个例子中使用的是nginx的upstream模块进行反向代理实现。

4、通过proxy_pass http://hellonginx; 中的 hellonginx 可以找到对应的upstream块,然后,可以根据其中的 server 127.0.0.1:8080 ;再次进行代理请求到目标服务器。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是将 NestJS 应用程序打包部署到服务器具体流程: 1. 编写 NestJS 应用程序代码:首先,你需要编写 NestJS 应用程序的代码,并进行本地测试和调试,确保应用程序能够正常运行。 2. 安装依赖包:在部署之前,你需要将应用程序所依赖的第三方包安装到本地项目中。可以使用 npm 或者 yarn 命令来安装依赖包,例如: ``` npm install ``` 3. 配置环境变量:应用程序的运行需要依赖一些环境变量,例如数据库连接信息等。你可以在应用程序的根目录下创建一个 `.env` 文件,将需要的环境变量配置在文件中。 4. 打包应用程序:在部署之前,你需要将应用程序打包成一个可执行的文件或者一个 Node.js 模块。可以使用 npm 或者 yarn 命令来打包应用程序,例如: ``` npm run build ``` 5. 部署应用程序:部署应用程序的方式可以选择 Docker、PM2、Nginx 或者直接部署到服务器等方式。在部署过程中,你需要将应用程序的打包文件上传到服务器,并根据具体的部署方式进行配置和操作。比如,使用 PM2 部署应用程序可以通过以下步骤: - 在服务器上安装 Node.js 和 PM2。 - 将应用程序的打包文件上传到服务器。 - 使用 PM2 命令启动应用程序,例如: ``` pm2 start dist/main.js --name myapp ``` 6. 配置反向代理(可选):如果你使用 Nginx 反向代理部署应用程序,你需要在 Nginx 配置文件中添加反向代理规则,将客户端的请求转发到应用程序所监听的端口上。 以上就是将 NestJS 应用程序打包部署到服务器具体流程。在部署过程中,你需要注意应用程序的安全性和可靠性,定期备份应用程序和数据,并进行监控和维护等工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值