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


相关推荐

  • 用 JavaScript 实现带倒计时与持久化状态的按钮禁用与自动启用:完整教程与代码示例

    用 JavaScript 实现带倒计时与持久化状态的按钮禁用与自动启用:完整教程与代码示例

    2026年3月12日
    3
  • 后台管理系统 – 权限管理「建议收藏」

    后台管理系统 – 权限管理「建议收藏」不管是开发手机APP,网站还是小程序等项目,基本上都需要一个后台管理系统的支撑。而每个后台管理系统都有一个通用的功能就是用户权限管理。最近基于Antd+React.js做了一个后台管理系统。

    2025年10月31日
    3
  • 关于SetCapture() 和 ReleaseCapture()的使用方法

    关于SetCapture() 和 ReleaseCapture()的使用方法  查MSND,对SetCapture()函数的说明为:“该函数在属于当前线程的指定窗体里设置鼠标捕获。一旦窗体捕获了鼠标,全部鼠标输入都针对该窗体,不管光标是否在窗体的边界内。同一时刻仅仅能有一个窗体捕获鼠标。假设鼠标光标在还有一个线程创建的窗体上,仅仅有当鼠标键按下时系统才将鼠标输入指向指定的窗体。”一開始我看这个解释误觉得了仅仅要在属于窗体里的一个线程调用了SetCapture(hWn…

    2022年6月5日
    32
  • GitHub 新手详细教程「建议收藏」

    GitHub 新手详细教程「建议收藏」 这篇文章是我自己写的关于GitHub的内容,从我刚听到这个直到设置成功每一步都有详细的步骤来解释,其中有一些截图或者代码来自于网上。在开始前先跟大家说一下这篇博客是来介绍桌面版GitHub的使用的,如果只是简单的想使用GitHub新手可以使用网页版 https://blog.csdn.net/Hanani_Jia/article/details/79855429 这是我写的网页版的使用教…

    2022年5月8日
    47
  • 流媒体服务器配置_视频监控流媒体服务器配置

    流媒体服务器配置_视频监控流媒体服务器配置对于普通视频网站来说,并发数量是一个非常有参考价值的数据,在部分时间段,并发数量也许不大,但是也可能短时间内暴涨且没有上限,此时就需要系统具备良好的扩张能力和负载均衡能力。那么如何针对流媒体服务器分发的RTSP流进行并发压力测试了解系统的能力?本分和大家分享一下我们的测试过程。通过使用多路RTSP客户端进行拉流,即可达到并发压力测试。对于RTSP客户端的选择,可以选择开源的OpenRTSP客户端进行拉流测试。OpenRTSP的使用方法如下:1、下载源码wgethttp://www.live5

    2022年10月20日
    5
  • 对图片批量重命名_重命名批处理最大量

    对图片批量重命名_重命名批处理最大量for遍历指定文件,取其名for%%iin(*.png)do()set/a定义序号(随循环而变)for循环内用到序号值需要使用延迟变量setlocalEnableDelayedExpansion

    2025年9月14日
    7

发表回复

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

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