首页 > 系统相关 >NGINX 实战操作(yarn-proxy)

NGINX 实战操作(yarn-proxy)

时间:2024-01-28 17:44:48浏览次数:26  
标签:compose 部署 yarn filter NGINX proxy docker

目录

一、概述

NGINX 代理是非常常见的,内网生成环境一般不让在本机直接访问,这时候就得利用代理,但是一般代理就得脱敏或去掉页面上的高危操作。这里就拿 YARN 代理来讲解。这里也会涉及到 subs_filter 讲解,如果对 subs_filter 不理解的小伙伴,可以先查阅我这篇文章:NGINX sub_filter和subs_filter 指令讲解

在这里插入图片描述

二、部署 Hadoop 环境

Hadoop 的部署可以参考我之前的以下几篇文章:

三、部署 yarn-proxy on docker

这里部署的是基于GitHub上的一个项目:https://github.com/HBigdata/yarn-reverse-proxy

1)部署 docker

# 安装yum-config-manager配置工具
yum -y install yum-utils

# 建议使用阿里云yum源:(推荐)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker-ce版本
yum install -y docker-ce
# 启动并开机启动
systemctl enable --now docker
docker --version

2)部署 docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
docker-compose --version

3)部署 dnsmasq

在这里插入图片描述

  1. dnsmasq 先去解析 /etc/hosts 文件。
  2. 再去解析 /etc/dnsmasq.d/ 下的 *.conf 文件,并且这些文件的优先级要高于 /etc/dnsmasq.conf
  3. 我们自定义的 resolv.dnsmasq.conf中的 DNS 也被称为上游 DNS ,这是最后去查询解析的。
yum install -y dnsmasq
systemctl start dnsmasq.service

hadoop 相关的主机名映射都提前配置到 /etc/hosts 文件中。

想了解更多,可以参考我这篇文章:dnsmasq( DNS和DHCP)服务

4)下载 yarn-proxy

git clone https://github.com/HBigdata/yarn-reverse-proxy.git
cd yarn-reverse-proxy-master
cp docker-compose.example.yml docker-compose.yml

5)修改配置

version: '3'
services:
  app:
    build: .
    #expose:
    #  - 80
    ## WARNING: uncomment the following only if you are
    ## not directly exposing a non-kerberized cluster
    ## to the Internet
    # ports:
    #   - "5555:80"
    environment:
      TZ : 'Asia/Shanghai'
    dns:
      - localhost
    ports:
      - "80:80"
    # 指定 DNS 服务
    
    environment:
      # Because your primary resource-manager is at /rm1
      # access your main status page at $SERVER_URL_BASE/rm1
      SERVERS: "hostname-rm-110:8088@rm110
                hostname-rm-111:8088@rm111
                hostname-nm-112:8042@nm112
                hostname-nm-113:8042@nm113
                hostname-nm-114:8042@nm114
                hostname-nm-115:8042@nm115
                hostname-nm-116:8042@nm116
                hostname-nm-117:8042@nm117
                hostname-nm-118:8042@nm118
                hostname-jn-119:19888@jh119"
      RESOLVER: YOUR_NETWORKS_DNS_SERVER # or 127.0.0.11 for the system resolver
      SERVER_URL_BASE: http://REVERSE_PROXY_HOSTNAME:80

需要修改的地方:

  • SERVERSREVERSE_PROXY_HOSTNAME
  • dns 地址记得更好成自己的 dns 机器。

6)开始部署

docker-compose build
docker-compose up -d

7)通过 subs_filter 进行改进

如果nm节点太多了,都遍历代理的话,就导致超过NGINX配置的长度的,太长配置也影响阅读,所以这里就通过 nginx subs_filter 进行改进。

subs_filter 的部署与用法可以参考我这篇文章:NGINX sub_filter和subs_filter 指令讲解

通过正则表达式修改 run.sh

# 将这段内容替换成正则
    cat <<EOF
    # Rewrite references without the scheme, e.g. //google.com
    sub_filter 'src="//$REWRITE_NAME:$REWRITE_PORT' 'src="$SERVER_URL_BASE/$REWRITE_ALIAS';
    sub_filter 'href="//$REWRITE_NAME:$REWRITE_PORT' 'href="$SERVER_URL_BASE/$REWRITE_ALIAS';
    sub_filter 'href=\'//$REWRITE_NAME:$REWRITE_PORT' 'href=\'$SERVER_URL_BASE/$REWRITE_ALIAS';

    # Rewrite all absolute references, regardless of where
    # they appear in the page
    sub_filter 'http://$REWRITE_NAME:$REWRITE_PORT/' '$SERVER_URL_BASE/$REWRITE_ALIAS/';
    sub_filter 'http://$REWRITE_NAME:$REWRITE_PORT' '$SERVER_URL_BASE/$REWRITE_ALIAS';

    proxy_redirect http://$REWRITE_NAME:$REWRITE_PORT/ $SERVER_URL_BASE/$REWRITE_ALIAS/;
EOF


# 示例替换
    cat <<EOF
    # Rewrite references without the scheme, e.g. //google.com
    sub_filter 'src="//local-168-(\w+)-(\d+):$REWRITE_PORT' 'src="$SERVER_URL_BASE/\$1\$2' g r;
    sub_filter 'href="//local-168-(\w+)-(\d+):$REWRITE_PORT' 'href="$SERVER_URL_BASE/\$1\$2' g r;
    sub_filter 'href=\'//local-168-(\w+)-(\d+):$REWRITE_PORT' 'href=\'$SERVER_URL_BASE/\$1\$2' g r;

    # Rewrite all absolute references, regardless of where
    # they appear in the page
    sub_filter 'http://local-168-(\w+)-(\d+):$REWRITE_PORT/' '$SERVER_URL_BASE/\$1\$2/' g r;
    sub_filter 'http://local-168-(\w+)-(\d+):$REWRITE_PORT' '$SERVER_URL_BASE/\$1\$2' g r;

    proxy_redirect http://local-168-(\w+)-(\d+):$REWRITE_PORT/ $SERVER_URL_BASE/\$1\$2/ g r;
EOF

四、部署 yarn-proxy on k8s

yarn-proxy on k8s 部署跟 docker-compose 差不多,这里就不再重复讲解了,有任何疑问欢迎给我留言或私信。


NGINX 实战操作(yarn-proxy)讲解就先到这里了,有任何疑问也可关注我公众号:大数据与云原生技术分享,进行技术交流,如本篇文章对您有所帮助,麻烦帮忙一键三连(点赞、转发、收藏)~

标签:compose,部署,yarn,filter,NGINX,proxy,docker
From: https://www.cnblogs.com/liugp/p/17993071

相关文章

  • 创建Vue项目,报错spawn yarn ENOENT
    1.使用vue创建项目的时候,报错Error:spawnyarnENOENT1.1用户自己设置了默认的包管理yarn1.2没有安装yarn解决方式1:打开C盘,在C盘里,打开users(用户名)的文件夹,然后在右侧搜索名为.vuerc的文件修改.vuerc文件解决方式2:没有安装yarn,那么直接输入命令npmin......
  • Windows 下 Nginx 配置 多个conf 文件的过程与注意事项
    Windows下配置Nginx使用多个conf文件的Include路径与Linux有所不同。 如上:Windows:include../conf.d/*.confLinux:include /etc/nginx/conf.d/*.conf; 分别来看单个配置文件的内容:总配置文件nginx.conf###########################################......
  • 使用 certbot 通过 Let's Encrypt 申请免费证书,部署到 nginx 中,开启 https
    使用certbot可以很方便、快捷的通过Let’sEncrypt申请免费的证书,并部署到nginx中,开启https在Linux通过命令安装安装Nginxsudoaptinstallnginx安装certbot先安装snapsudoaptinstallsnap再通过snap安装certbotsudosnapinstall--classiccertb......
  • 在linux中安装nginx 集群 步骤 实例 双语版
    以下是在Linux中安装Nginx集群的步骤:在每个节点上安装Nginx软件包。可以使用包管理系统安装,如apt-get或yum,或者从Nginx官方网站下载源码进行编译和安装。创建一个共享的存储区来存放Nginx配置文件和日志文件。这可以是本地文件系统的共享目录,也可以是网络文件系统(NFS)。创建一个Ngin......
  • 生成nginx证书
    生成NginxSSL证书的基本步骤如下:准备证书签发请求文件(CSR--即证书签名申请(CertificateSigningRequest)):opensslreq-new-nodes-sha256-newkeyrsa:2048-keyoutserver.key-outserver.csrOrganizationName:公司名称,可以是中文或英文。OrganizationalUnitName:部门......
  • 2024-01-26 yarn证书源过期 ==》 yarn切换的镜像源为https,实际上该链接的证书已过期,应
    如,我给一个项目用yarn装依赖,这时候报错:yarninstallv1.22.21infoNolockfilefound.[1/4]Resolvingpackages...errorError:certificatehasexpiredatTLSSocket.onConnectSecure(node:_tls_wrap:1539:34)atTLSSocket.emit(node:events:513:28)atTLSSocket._fin......
  • Nginx被它打败了?
    Nginx被它打败了?我们经常使用Nginx作为我们系统的代理,通常情况下是完全够用的,但是有时候业务的复杂性,我们也需要使用在网关中去代理中做一些业务,这个时候Nginx也可以使用lua脚本扩展,但是并非所有人都会lua,比如我这个.NET开发,这个时候我看到了微软开发的YARP这个SDK,果然还是微软给......
  • 45从零开始用Rust编写nginx,静态文件服务器竟然还有这些细节
    wmproxywmproxy已用Rust实现http/https代理,socks5代理,websocket代理,反向代理,静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透等,力争打造和nginx的性能。项目地址国内:https://gitee.com/tickbh/wmproxygithub:https://github.com/tickbh/wmproxy静态文件服务器静态......
  • nginx高级篇(二)
    一.基于ip地址的访问限制allowxxxx;denyxxxx;他俩的放置顺序;限制只允许10.0.0.0~10.0.0.255范围的IP访问限制只允许10.0.0.0~10.0.0.255范围的IP访问(禁止其他网段的访问)创建虚拟主机,完成该功能[root@web-8/etc/nginx/conf.d]#catdeny-allow.confserver{listen2266......
  • Nginx日志检测分析工具 - WGCLOUD
    WGCLOUD可以对Nginx的日志文件进行全面分析,包括IP、sql注入、搜索引擎蜘蛛爬取记录、HTTP响应状态码、访问量最高的IP统计、扫描统计等效果如下图......