精华内容
下载资源
问答
  • Nginx实现端口转发

    2021-05-10 03:55:06
    什么是端口转发当我们在服务器上搭建一个资料以及一个下载的应用,其中资料应用启动了 8001 端口,下载应用启动了 8002 端口。此时如果我们可以通过localhost:8001 //资料localhost:8002 //下载但我们一般访问应用的...

    什么是端口转发

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

    localhost:8001    //资料

    localhost:8002    //下载

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

    #配置负载均衡池

    #Demo1负载均衡池

    upstream linux_pool{

    server 127.0.0.1:8001;

    }

    #Demo2负载均衡池

    upstream m_pool{

    server 127.0.0.1:8002;

    }

    #Demo1端口转发

    server {

    listen      80;

    server_name  linux.linuxidc.com;

    access_log logs/linux.log;

    error_log logs/linux.error;

    #将所有请求转发给demo_pool池的应用处理

    location / {

    proxy_set_header Host $host;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://linux_pool;

    }

    }

    #Demo2端口转发

    server {

    listen      80;

    server_name  m.linuxidc.com;

    access_log logs/m.log;

    error_log logs/m.error;

    #将所有请求转发给demo_pool池的应用处理

    location / {

    proxy_set_header Host $host;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_pass http://m_pool;

    }

    }

    上面这段配置实现了:

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

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

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

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 开发过程中经常遇到这样的需求需要基于某网关设备做负载均衡内网中某台服务器提供外网访问服务80端口流量区分TCP端口转发需求1、2归结起来说就是对TCP流量转发,nginx 原生支持tcp流量转发。比如我A服务器(192.168.1...

    开发过程中经常遇到这样的需求需要基于某网关设备做负载均衡

    内网中某台服务器提供外网访问服务

    80端口流量区分

    TCP端口转发

    需求1、2归结起来说就是对TCP流量转发,nginx 原生支持tcp流量转发。

    比如我A服务器(192.168.1.100)是网关设备,有公网访问能力;B(192.168.1.101)、C(192.168.1.102)服务器是内网服务器;想通过A服务器将请求转发到B、C服务。具体配置如下:stream{

    server{

    listen 0.0.0.0:10190 udp;

    proxy_responses 0;

    proxy_timeout 2s;

    proxy_pass proxy_b;

    }

    server{

    listen 0.0.0.0:10191 udp;

    proxy_responses 0;

    proxy_timeout 2s;

    proxy_pass proxy_c;

    }

    upstream proxy_b{

    server 192.168.1.101:10290;

    }

    upstream proxy_c{

    server 192.168.1.102:10290;

    }

    }

    该配置需要再ngxin顶级模块中配置。通过上面的配置,就能将A服务器的10190转发到B服务器的10290,A服务器的10191转发到C服务器的10290。

    HTTP流量转发

    上面介绍的是纯TCP转发,如果想做HTTP分流,比如将不同请求全部转发到A的80端口然后再区分流量,只能通过nginx的http模块来配置。具体配置如下:http

    {

    ...

    upstream socket_proxy {

    hash $remote_addr consistent;

    server domain-b.com:8020 weight=5 max_fails=3 fail_timeout=30s;

    }

    server {

    listen 80;

    server_name domain-a.com;

    location / {

    proxy_pass http://socket_proxy;

    }

    }

    ...

    }

    上面提供的经验能在开发中提供很好的帮助。

    展开全文
  • Nginx 配置TCP/UDP端口转发nginx 的功能非常强大,其中作为代理服务器是非常常用的功能,但是之前的nginx代理只能做七层代理,也就说是基于应用层面的代理,TCP层面的代理一般会配合haproxy 来使用。但是自从nginx ...

    Nginx 配置TCP/UDP端口转发

    nginx 的功能非常强大,其中作为代理服务器是非常常用的功能,但是之前的nginx代理只能做七层代理,也就说是基于应用层面的代理,TCP层面的代理一般会配合haproxy 来使用。但是自从nginx 1.9 以后通过stream模块实现了tcp 代理功能,无需其他软件配合即可实现四层代理和七层代理,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的URL请求,还可以转发如memcached、MySQL等点到点的请求

    环境

    ip

    主机名

    端口

    说明

    192.168.1.101

    node1

    3389

    nginx服务器

    192.168.1.102

    node2

    ~

    客户端

    8.8.8.8

    ~

    389

    目标服务器

    1.安装nginx服务

    1.1 安装nginx

    默认安装stream模块,我写文档时nginx版本为1.14.0

    参考:RHEL/CentOS 安装 nginx

    1.2 对于已经安装nginx的,检查是否编译时带with-stream参数

    [root@node1 ~]# nginx -V |grep with-stream

    有with-stream参数,可以代理tcp协议

    2 配置nginx的tcp代理

    请注意,stream块和http块是两个不同的模块,stream不属于http模块,即不能放到/etc/nginx/conf.d/,stream是通过tcp层转发,而不是http转发。

    如配置在http内,启动nginx会报如下错误:

    nginx: [emerg] "server" directive is not allowed here

    2.1 修改主配置文件,添加stream目录

    [root@node1 ~]# cd /etc/nginx/

    [root@node1 ~]# cp -a nginx.conf{,_$(date +%F)}

    [root@node1 ~]# vim nginx.conf

    # 最后追加如下内容

    # tcp/ip proxy

    include /etc/nginx/tcp.d/*.conf;

    2.2 添加tcp转发配置

    [root@node1 ~]# mkdir tcp.d

    [root@node1 ~]# cd tcp.d

    在新建的 tcp.d 目录下创建 conf 文件新建一个 tcp 配置,例如我转发到IP为8.8.8.8的389端口

    [root@node1 ~]# vim openldap.conf

    stream{

    upstream tcpssh{

    hash $remote_addr consistent;

    server 8.8.8.8:389 max_fails=3 fail_timeout=10s;

    }

    server{

    listen 3389;

    proxy_connect_timeout 20s;

    proxy_timeout 5m;

    proxy_pass tcpssh;

    }

    }

    说明:

    "upstream tcpssh":转发的目的地址和端口等设置;其中tcpssh为自定义;

    "server":提供转发的服务,即访问localhost:3389,会跳转至代理"tcpssh"指定的转发地址.。

    这里就是配置的监听本地3389端口,会将流量相应转发到8.8.8.8服务器的389端口上。

    测试配置文件是否正确

    [root@node1 ~]# nginx -t -c /etc/nginx/nginx.conf

    [root@node1 ~]# nginx -t -c /etc/nginx/tcp.d/openldap.conf

    2.3 启动nginx服务

    启动nginx服务

    [root@node1 ~]# systemctl start nginx.service

    查看是否启动

    [root@node1 ~]# systemctl status nginx.service

    ● nginx.service - nginx - high performance web server

    Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

    Active: active (running) since Sat 2018-09-29 11:34:01 CST; 5h 37min ago

    Docs: http://nginx.org/en/docs/

    Main PID: 26114 (nginx)

    CGroup: /system.slice/nginx.service

    ├─26114 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

    └─26115 nginx: worker process

    Sep 29 11:34:01 node1 systemd[1]: Starting nginx - high performance web server...

    Sep 29 11:34:01 node1 systemd[1]: Started nginx - high performance web server.

    [root@node1 ~]#

    3 客户端配置

    3.1 测试连接目标端口:

    [root@node2 ~]# telnet 192.168.1.101 3389

    Trying 192.168.1.101...

    Connected to 192.168.1.101.

    Escape character is '^]'.

    出现"Connected to 192.168.1.101",说明连接成功

    测试完成,"Ctrl+C"结束

    3.2 相关业务软件配置

    把要连接8.8.8.8:389的配置改为nginx服务器ip(192.168.1.101),及代理端口3389。

    如果业务没有出现问题的话,则说明已经配置完成了

    END

    展开全文
  • 如题所示,nginx在1.9版本之后可以充当端口转发的作用,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟...

    如题所示,nginx在1.9版本之后可以充当端口转发的作用,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的URL请求,还可以转发如memcached、MySQL等点到点的请求

    实现步骤如下:

    (1)nginx在编译时添加“–with-stream”:./configure –prefix=/usr/local/nginx –user=www –group=www –with-http_stub_status_module –with-pcre=/usr/local/src/pcre-8.38 –add-module=/usr/local/src/ngx_cache_purge-2.3 –with-http_gzip_static_module–with-stream

    (2)修改nginx配置文件nginx.conf:[root@tkde-iphone ~]# vim /usr/local/nginx/conf/nginx.confuser  www www;

    worker_processes  32;

    pid        logs/nginx.pid;

    events {

    #use epoll;                            #Linux最常用支持大并发的事件触发机制

    worker_connections  65535;

    }

    stream {

    upstream zifangsky {

    hash $remote_addr consistent;

    server 10.10.100.31:8000;

    }

    server {

    listen 8080;

    proxy_connect_timeout 5s;

    proxy_timeout 5s;

    proxy_pass zifangsky;

    }

    }

    http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    #tcp_nopush     on;

    #keepalive_timeout  0;

    keepalive_timeout  65;

    #gzip  on;

    server {

    listen       9000;

    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {

    root   html;

    index  index.html index.htm;

    }

    }

    }

    在上面的配置文件中配置了在访问此服务器的8080端口时,会将流量相应转发到10.10.100.31这个服务器的8000端口上

    (3)查看是否监听端口:[root@app01 nginx]# netstat -apn | grep 8080:

    (4)测试连接目标端口:[root@app01 nginx]# telnet 10.10.100.31 8000

    Trying 10.10.100.31...

    Connected to 10.10.100.31.

    Escape character is '^]'.

    (5)在其他客户机上测试连接nginx服务器的8080端口端口:[root@app05 ~]# telnet 192.168.1.30 8080

    Trying 192.168.1.30...

    Connected to 192.168.1.30.

    Escape character is '^]'.

    Connection closed by foreign host.

    当然,后面就是在客户机上将原来连接10.10.100.31的地方改成连接nginx服务器的地址,如果业务没有出现问题的话,则说明已经配置完成了

    展开全文
  • package main import ( ...“sync” “fmt” “time” “errors” “context” “os” ...url string listener net.Listener connections map[uint64]*TcpConnection connectionsLock *sync.RWMutex run
  • 为了实现直接用域名访问系统,于是开发人员搭建了Apache HTTP Server,利用URL转发来解决这个问题。二、安装Apache HTTP Server1、下载apache(地址:http://httpd.apache.org),并解压到指定目录下;2、安装,...
  • 原理就是:你自己的宿主机ip别人是能ping通的,那么,你现在要做的就是在宿主机上开放一个端口,这个端口映射到你虚拟机的ip:port,那么他curl你宿主机的ip:port也就相当于是转发到了你的虚拟机上去了 用管理员权限...
  • nginx地址80端口转发后,ip地址自动添加代理的端口
  • Nginx端口转发配置: server { listen 9988; server_name localhost; # location / { # # 静态资源服务 # root D:/nginx-1.21.1/static; # index index.html index.htm; # } # ~为正则匹配,路径中包含xxx...
  • OpenWrt路由开启DDNS+端口转发进行外网访问(LuCI界面实现)--开篇一、准备工作二、开机!三、连接--结尾 –开篇 本篇适用于一切装有OpenWrt系统的路由器/软路由,只要你保证有WAN接口和一个光猫,甚至你不需要有...
  • 数据库配置 spring: datasource: ## ssh 本地数据库 username: read_only password: 123456 url: jdbc:mysql://localhost:3315/xa_maas?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&...
  • 2.url转发也能够使得一个网站拥有几个域名 比如wikipedia.com和wikipedia.net都指向了wikipedia.org。当你访问wikipedia.com或wikipedia.net的时候,跳转出来的页面是wikipedia.org的页面 3.重定向是带有状态码的...
  • 路由器端口转发的功能是通过路由器的wan口实现两个不同网段的ip直接进行通信。Wan口是与互联网进行通信的端口,Lan口是内网的端口。下面以华硕路由器为示例说明路由器端口转发的详细配置。需要实现的网络结构如下图...
  • 1. 前言 本文是为了解决vue反向代理解决跨域及部署服务器nginx端口转发解决跨域,因为踩了不少的坑,百度了很多,也试了太多的方法,最终得以解决,所以记录一下,希望遇到同样问题的友友们可以高效的解决自己项目中...
  • python3 neoreg.py -k -u http://xxx/tunnel.php 不同于ew等端口转发软件,这个是设置web服务器的url 安装Proxychains-Ng 在kali上进行安装,一般情况下kali上自带proxychains,无需安装 # Linux $ git clone ...
  • 显性URL转发/隐性URL转发其实URL转发里面的两种转发方式,根据跳转后的是否改变域名来判断显性还是隐形。当然根据不同的需要,可以选择不同的转发方式。今天小编为大家介绍的是隐/显性URL转发记录添加方式。显性URL...
  • nginx 需要把http://localhost/api/getUser 转换成后端的访问端口及路由,例如:http://localhost:8080/getUser,从而访问服务。 这里就涉及到一个URL重写的的概念,可以使用多种方式来实现,那么这里由于前端程序时...
  • 一 实验目的用HAProxy作为负载均衡器,实现把前端请求调度到后端,前端监听80端口转发至后端的8000端口,并会对访问资源进行判断实现不同的访问内容转发至相对应的服务器。二 实验拓扑三 实验环境IP功能192.168.20...
  • 端口转发(Port forwarding)是安全壳(SSH) 为网络安全通信使用的一种方法,有时也被称为隧道。 端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT...
  • 其他说明 5.1 在配置proxy_pass代理转发时,如果后面的url加/,表示绝对根路径;如果没有/,表示相对路径 5.2 修改超时时间 http {  keepalive_timeout 120; } 5.3 修改最大连接数 查看系统支持的最大连接数命令:...
  • 如果B是window系统,这里推荐一个非常方便小巧的工具kingate(http://sourceforge.net/projects/kingate ),简单配置即可实现端口转发功能。kingate功能非常全,同时支持http,https,socks,pop3,smtp,telnet,ftp,mms...
  • 介绍 每个 Web 服务都可以通过特定的 URL 在 Internet 上访问,该 URL 代表一种“替代名称”,用于标识...特别是,按照指南的说明,您将学习将来自某个端口的请求转发到另一个端口(端口转发),同时使用后者提供的.
  • 二级目录映射目前前后端项目分离场景多了以后,一般是前端一个端口,后端一个端口。如前端是https://example.com/index.html,调用的接口是https://example.com:4433如此部署对于一些小项目未免有些麻烦,当然你在...
  • 使用场景:需要根据截取url动态配置跳转路径,常见于访问内网不固定ip地址的文件图片,请求地址:...http://32.5...
  • ingress-nginx 实现内部局域网的url转发配置 实现目的: 在 192.168.4.4 物理服务器上部署 WEB服务器 端口80. 外网IP80端口直接指向ingress-nginx。 域名指向 ingress-nginx ip 可以访问到局域网内物理搭建的web...
  • harles 端口转发端口转发端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过...
  • 参考文档: An Illustrated Guide to SSH Tunnels <Local image mirror (snap/2.9...折腾了下,发现可以在办公网的局域网内架设www server安装本身maas镜像源,maas server通过ssh远程端口转发来访问此内网www server
  • https只支持433端口,其它端口的应用得在url中传一个应用标识参数,然后nginx根据这个参数转发到对应的端口 比如https://39.106.4.0/kubesys/转发到http://39.106.4.0:30308/kubesys/ #user nobody; worker_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,227
精华内容 29,690
关键字:

url端口转发