NGINX 实现端口转发

NGINX 实现端口转发

Nginx是个厉害的服务器,可以配置多个服务器,一个server就是一个服务器

server {

      listen       80;

      server_name  *.yourdomain.com;

 

   ....

}

代理转发是在server下面的location进行配置

server {

   // 服务器配置

   location  / {

   // ...... 代理配置

   }

}

常见的Nginx代理配置

upstream my_server {                                                        

    server 10.0.0.2:8080;                                               

    keepalive 2000;

}

server {

    listen       80;                                                        

    server_name  10.0.0.1;                                              

    client_max_body_size 1024M;

 

    location /my/ {

        proxy_pass http://my_server/;

        proxy_set_header Host $host:$server_port;

    }

}

通过该配置,访问nginx地址http://10.0.0.1:80/my的请求会被转发到my_server服务地址http://10.0.0.2:8080/


 

什么是端口转发

当我们在服务器上搭建一个图书以及一个电影的应用,其中图书应用启动了 8001 端口,电影应用启动了 8002 端口。此时如果我们可以通过

localhost:8001    //图书
localhost:8002    //电影

但我们一般访问应用的时候都是希望不加端口就访问域名,也即两个应用都通过 80 端口访问。但我们知道服务器上的一个端口只能被一个程序使用,这时候如何该怎么办呢?一个常用的方法是用 Nginx 进行端口转发。Nginx 的实现原理是:用 Nginx 监听 80 端口,当有 HTTP 请求到来时,将 HTTP 请求的 HOST 等信息与其配置文件进行匹配并转发给对应的应用。例如当用户访问 book.douban.com 时,Nginx 从配置文件中知道这个是图书应用的 HTTP 请求,于是将此请求转发给 8001 端口的应用处理。当用户访问 movie.douban.com 时,Nginx 从配置文件中知道这个是电影应用的 HTTP 请求,于是将此请求转发给 8002 端口的应用处理。一个简单的 Nginx 配置文件(部分)如下面所示:

#配置负载均衡池
#Demo1负载均衡池
upstream book_pool{
    server 127.0.0.1:8001;
}
#Demo2负载均衡池
upstream movie_pool{
    server 127.0.0.1:8002;
}

#Demo1端口转发
server {
    listen       80;
    server_name  book.chanshuyi.com;
    access_log logs/book.log;
    error_log logs/book.error;
    
    #将所有请求转发给demo_pool池的应用处理
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://book_pool;
    }
}
#Demo2端口转发
server {
    listen       80;
    server_name  movie.chanshuyi.com;
    access_log logs/movie.log;
    error_log logs/movie.error;
    
    #将所有请求转发给demo_pool池的应用处理
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://movie_pool;
    }
}

上面这段配置实现了:

1、当用户访问的域名是:http://book.chanshuyi.com 时,我们自动将其请求转发给端口号为 8001 的 Tomcat 应用处理。

2、当用户访问的域名是:http://movie.chanshuyi.com 时,我们自动将其请求转发给端口号为 8002 的 Tomcat 应用处理。

上面的这种技术实现就是端口转发。端口转发指的是由软件统一监听某个域名上的某个端口(一般是80端口),当访问服务器的域名和端口符合要求时,就按照配置转发给指定的 Tomcat 服务器处理。我们常用的 Nginx 也有端口转发功能。

 

参考:

https://www.php.cn/nginx/425693.html

https://www.cnblogs.com/zhaoyingjie/p/7248678.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119508.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月23日 上午8:00
下一篇 2021年11月23日 上午9:00


相关推荐

  • java最新漏洞_JavaMelody XXE漏洞(CVE-2018-15531)分析

    java最新漏洞_JavaMelody XXE漏洞(CVE-2018-15531)分析0x01背景JavaMelody是一款在生产和QA环境中对JAVA应用以及应用服务器(Tomcat、Jboss、Weblogic)进行监控的工具,可以通过图表给出监控数据,方便研发运维等找出响应瓶颈、优化响应等。近日发布了1.74.0版本,修复了一个XXE漏洞,漏洞编号CVE-2018-15531。攻击者利用漏洞,可以读取JavaMelody服务器上的敏感信息。0x02漏洞分析漏洞修复的com…

    2022年7月7日
    73
  • 接口自动化测试实践指导(下):接口自动化测试断言设置思路

    接口自动化测试实践指导(下):接口自动化测试断言设置思路在测试用例中 绑定 API 文档之后 当 API 发生变化时 您可以一键将文档内容同步到测试步骤中 减轻维护用例的成本

    2026年3月19日
    2
  • wangEditor的使用

    wangEditor的使用wangEditor的使用第一步,将其下载,并引入项目中。第二步,引入js第三步,初始化对象第四步,添加一些配置配置菜单配置图片上传第五步,设置内容第六步,获取内容很好,很方便!

    2022年8月2日
    12
  • s一般怎么称呼自己的m_从你对四种新疆夏至美食的称呼,就能判断你是不是新疆人…

    s一般怎么称呼自己的m_从你对四种新疆夏至美食的称呼,就能判断你是不是新疆人…夏至到了,看着晴朗的天空,体味着周围不断蒸腾起的热浪,尤其是内里的燥热难当。闭起眼来,问自己的内心的胃,现在最想吃的、喝的是什么?不承想,竟然是最具有新疆特色的几样美味。而且,我今天不准备说怎么吃,只说怎么叫!意不意外,新鲜不新鲜!第一种美味——冰镇红乌苏你一定会认为我要说大盘鸡?哈哈哈,太土了吧!也不知道从什么时候起,乌苏啤酒,成为了流行全国的夏日最火啤酒。如果你说“乌苏啤酒”恭喜你,你要被小轻…

    2022年6月23日
    37
  • 利用STM32F103精确控制步进电机「建议收藏」

    利用STM32F103精确控制步进电机「建议收藏」**利用STM32F103控制步进电机精确角度转动**欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器,可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,…

    2022年6月1日
    40
  • 使用matlab读取并保存,使用matlab读取excel数据并保存

    使用matlab读取并保存,使用matlab读取excel数据并保存数据格式如下 数据有 M 行 每行有 4 列 4 列之间用 分开 每列中的数据用 分开提取这些数据并保存数据文件内容如下 RawData xlsxaaaaa bbbb cccc ddddd eeeee ffffff gggggg hhhhhhjjjjjj kkkkkkkkkk function stData ReadData varargin ifnargin 0

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号