当前位置:   article > 正文

nginx stream 转发_ngins stream 转发

ngins stream 转发

前言

为了文章通过,作如下注释: stream: 流; firewall: 防火墙;

本篇文章 主要是配合 上一篇 opn 穿透内网来使用的

通过 公网服务器 + opn 实现了 内网穿透, 然后我们通过 nginx stream转发 就可以实现 tcp stream转发,这样就可以 做到:

  1. 外网ip + port 访问到内网的服务(本教程实现
  2. 进一步的实现就是 多个域名 访问 内网不同项目

一、 centos 安装 nginx

yum install -y nginx 即可完成安装

二、nginx 配置

The ngx_stream_proxy_module module (1.9.0) allows proxying data streams over TCP, UDP (1.9.13), and UNIX-domain sockets.
官网说 ngx 可以代理 TCP,UDP…数据stream

vim /etc/nginx/nginx.conf 编辑nginx 配置文件

配置很简单, 和 ngx负载均衡配置相似, 只需要加上 steam 相关配置即可

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

stream {
	
	server {
	
		listen 10000;
		proxy_pass 192.168.131.6:8080;
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98

需要注意的配置错误

通过 nginx -t 显示一直报错, 后来发现, 这个多了个 http scheme。 这里是stream转发, 各种 scheme 的数据stream都会有。只需要 ip:port 即可。(upstream 负载均衡的时候也需要注意哦)

在这里插入图片描述

三、 nginx 启动

nginx -t 测试 nginx 配置文件是否存在语法错误,没有错误则 返回 ok

nginx -s reload nginx 测试没有错误后, 用来启动或者重启 nginx

四、 访问本地 8080 端口的页面

可以正常访问

在这里插入图片描述

五、 遇到的问题

很有可能在访问 本地 8080 服务的时候,页面不能正常加载 出来, cant get any response 之类的信息

4.1 页面不能正常加载

telnet 本地opnip port

出现如下图情况,则有两种可能

  1. 本地firewall没有关闭
  2. 或者 本地 8080 端口没有 tcp 相关服务开启
    在这里插入图片描述
    我遇到的问题就是我的 win10 firewall 开启了,我直接 关闭了firewall,如果是经常用作的服务器,我建议关闭 firewall,开启访问端口

4.2 辅助测试

ping opnip

如果 ping 不通,则是firewall开启了
在这里插入图片描述
关闭了firewall,同时关闭了 8080 端口的服务,测试结果如下。

临时总结下不一定对: telnet 如果出现 Connection refused/failed 应该就是 端口可以正常访问只是服务没有开启而已。

在这里插入图片描述

正常访问时候, telnet 结果:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/960813
推荐阅读
相关标签
  

闽ICP备14008679号