首页 > 系统相关 >Nginx 实战-04-nginx 不同的地址访问不同的服务

Nginx 实战-04-nginx 不同的地址访问不同的服务

时间:2024-06-02 14:43:39浏览次数:15  
标签:http 04 Nginx 实现 js nginx 服务器 手写

前言

大家好,我是老马。很高兴遇到你。

我们为 java 开发者实现了 java 版本的 nginx

https://github.com/houbb/nginx4j

如果你想知道 servlet 如何处理的,可以参考我的另一个项目:

手写从零实现简易版 tomcat minicat

手写 nginx 系列

如果你对 nginx 原理感兴趣,可以阅读:

从零手写实现 nginx-01-为什么不能有 java 版本的 nginx?

从零手写实现 nginx-02-nginx 的核心能力

从零手写实现 nginx-03-nginx 基于 Netty 实现

从零手写实现 nginx-04-基于 netty http 出入参优化处理

从零手写实现 nginx-05-MIME类型(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)

从零手写实现 nginx-06-文件夹自动索引

从零手写实现 nginx-07-大文件下载

从零手写实现 nginx-08-范围查询

从零手写实现 nginx-09-文件压缩

从零手写实现 nginx-10-sendfile 零拷贝

从零手写实现 nginx-11-file+range 合并

从零手写实现 nginx-12-keep-alive 连接复用

从零手写实现 nginx-13-nginx.conf 配置文件介绍

从零手写实现 nginx-14-nginx.conf 和 hocon 格式有关系吗?

从零手写实现 nginx-15-nginx.conf 如何通过 java 解析处理?

从零手写实现 nginx-16-nginx 支持配置多个 server

场景

假设我们有两个 http 服务

localhost:3000
localhost:3001

实际对应生产的等价的多台服务,如何通过 nginx 代理,让请求均衡的请求到每一台上面吗。

接下来我们来模拟一下整个流程。

nodejs 创建第1个 http 服务

Node.js 最简单的入门例子是一个基础的 Web 服务器,它使用 Node.js 内置的 http 模块来响应 HTTP 请求。

以下是创建这样一个服务器的步骤:

  1. 安装 Node.js:确保你已经在系统上安装了 Node.js。你可以通过在终端运行以下命令来检查 Node.js 是否已安装以及其版本号:

    node -v
    
  2. 创建一个新的 JavaScript 文件:在你的文本编辑器中,创建一个名为 app.js 的新文件。

  3. 编写代码:在 app.js 文件中,输入以下代码:

    const http = require('http'); // 引入 http 模块
    
    // 创建一个 HTTP 服务器
    const server = http.createServer((req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello, World!\n'); // 响应请求并发送一个字符串
    });
    
    // 服务器监听 3000 端口
    server.listen(3000, '127.0.0.1', () => {
      console.log('Server running at http://127.0.0.1:3000/');
    });
    
  4. 运行你的服务器:在终端中,导航到 app.js 文件所在的目录,然后运行以下命令:

    node app.js
    
  5. 访问服务器

$ curl http://127.0.0.1:3000/
Hello, World!

nodejs 创建第 2 个 http 服务

  1. 编写代码:在 app2.js 文件中,输入以下代码:

    const http = require('http'); // 引入 http 模块
    
    // 创建一个 HTTP 服务器
    const server = http.createServer((req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello, World! FROM 127.0.0.1:3001\n'); // 响应请求并发送一个字符串
    });
    
    // 服务器监听 3001 端口
    server.listen(3001, '127.0.0.1', () => {
      console.log('Server running at http://127.0.0.1:3001/');
    });
    
  2. 运行你的服务器:在终端中,导航到 app.js 文件所在的目录,然后运行以下命令:

    node app2.js
    
  3. 访问服务器

$ curl localhost:3001
Hello, World! FROM 127.0.0.1:3001

标签:http,04,Nginx,实现,js,nginx,服务器,手写
From: https://www.cnblogs.com/houbbBlogs/p/18227119

相关文章

  • 手机版XMind思维导图v24.04.11解锁付费版
    软件信息此版本由678收集整理发布。无需付费,所有功能全开启,欢迎各位机友下载。这是一款帮助你工作学习使用的一款效率软件,如果你有一个plan,那么你需要通过XMind思维导图手机版app去帮你制定一个详细的计划,然后添加各种趣味的信息,用来随时提醒你处理,欢迎下载使用。关于版本by......
  • day45 1049.最后一块石头的重量II 494.目标和 474.一和零
    1049.最后一块石头的重量II本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。本题物品的重量为stones[i],物品的价值也为stones[i]。对应着01背包里的物品重量weight[i]和物品价值value[i]。思路:动规五部曲1.确定dp数组以及下......
  • Exercise 04
    Exercise04Excercise04Ifyouwokeupthismorningthankstothealarmonyour1smartphone,orifyoulikewatchingvideosorplayinggamesonyour2tablet.Youareusing3applicationsalsoknownasapps.An4appisa5softwareprogramt......
  • Unity2D游戏制作入门 | 04
    上期连接:Unity2D游戏制作入门|03(主要介绍了快速绘图的瓦片调色盘功能)本节主要介绍物体的组件功能。如果我们点击我们的物体,然后你可以在最右侧的下部分看到英文:AddComponent,中其实是添加组件的意思。AI是这么回答组件的:组件(Components)是构建游戏对象(GameObjects)的核......
  • 如何使用 Apache 和 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向,或者URL重定向,是一种将一个域名或地址指向另一个的技术。重定向有许多用途,也有几种不同的重定向方式需要考虑。当一个站点需要将请求一个地址的人重定向......
  • 如何使用 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。临时重......
  • 如何使用 Nginx 创建临时和永久重定向
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介HTTP重定向是将一个域名或地址指向另一个的方法。有几种不同类型的重定向,每种对客户端浏览器意味着不同的事情。最常见的两种类型是临时重定向和永久重定向。临时重......
  • 【代码片段】使用docker部署nginx 并通过nginx设置密码访问控制
    使用docker部署nginx服务docker-compose.ymlversion:'3'services:web:image:nginxvolumes:-./nginx.conf:/etc/nginx/nginx.confrestart:alwaysports:-"80:80"-"443:443"environment:......
  • 如何在nginx配置静态资源
    1#指定Nginx使用的工作进程数,这里设置为1,生产环境中应根据CPU核心数调整以提高性能。2worker_processes1;34events{5#设置每个工作进程可以同时处理的连接数,这里是1024。6worker_connections1024;7}89http{10#包含MIME类型文件......
  • Day 11 | 20. 有效的括号 、1047. 删除字符串中的所有相邻重复项 、150. 逆波兰表达式
    20.有效的括号讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。大家先自己思考一下有哪些不匹配的场景,在看视频我讲的都有哪些场景,落实到代码其实就容易很多了。题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.有效的括号.html思考classSolution:......