溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Reproxy怎么用

發(fā)布時(shí)間:2021-12-16 10:13:52 來源:億速云 閱讀:177 作者:小新 欄目:網(wǎng)絡(luò)管理

這篇文章主要介紹了Reproxy怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Reproxy是一個(gè)簡單且功能強(qiáng)大的邊緣HTTP(S)服務(wù)器和反向代理工具,該工具支持多種提供程序,比如說Docker或文件等等。這些提供程序負(fù)責(zé)給工具提供有關(guān)請(qǐng)求服務(wù)器的基礎(chǔ)信息、URL地址、目標(biāo)URL和運(yùn)行狀況檢查URL等數(shù)據(jù),能夠以單個(gè)二進(jìn)制文件或Docker容器的形式進(jìn)行分發(fā)。

功能介紹

  • 基于Let’s Encrypt的自動(dòng)化SSL終止;

  • 支持用戶提供的SSL證書

  • 簡單但靈活的代理規(guī)則;

  • 靜態(tài)命令行代理規(guī)則提供程序;

  • 基于文件的動(dòng)態(tài)代理規(guī)則提供程序;

  • 具有自動(dòng)發(fā)現(xiàn)功能的Docker提供程序;

  • 支持多個(gè)(虛擬)主機(jī);

  • 可選流量壓縮;

  • 用戶定義的限制和超時(shí);

  • 單二進(jìn)制文件發(fā)布;

  • Docker容器發(fā)布;

  • 內(nèi)置靜態(tài)資產(chǎn)服務(wù)器;

  • 具有路由信息的管理服務(wù)器;

工具安裝

源碼安裝

廣大研究人員可以訪問該項(xiàng)目的Releases頁面選擇和獲取對(duì)應(yīng)版本的Reproxy。

Docker安裝

Reproxy的Docker容器版本可以在Docker Hub上獲取到,運(yùn)行下列命令即可:

docker pull umputun/reproxy

docker pull ghcr.io/umputun/reproxy

提供程序

我們可以通過各種提供程序來給工具提供代理規(guī)則,當(dāng)前支持文件、Docker和靜態(tài)規(guī)則三種形式。每一個(gè)提供程序都可以為代理請(qǐng)求和靜態(tài)(資產(chǎn))定義多個(gè)路由規(guī)則,用戶可以同時(shí)設(shè)置多個(gè)提供程序。

靜態(tài)規(guī)則

這是最簡單的提供程序,可以直接在命令行工具中定義所有需要映射的規(guī)則,而且還支持定義多個(gè)規(guī)則。其中,每個(gè)規(guī)則需要用3或4個(gè)逗號(hào)對(duì)元素進(jìn)行分隔,元素包含服務(wù)器、源URL、目的地址和[ping-url]:

*,^/api/(.*),https://api.example.com/$1

example.com,/foo/bar,https://api.example.com/zzz,https://api.example.com/ping

文件規(guī)則

reproxy --file.enabled --file.name=config.yml

下面給出的是config.yml文件樣例:

default: # the same as * (catch-all) server

  - { route: "^/api/svc1/(.*)", dest: "http://127.0.0.1:8080/blah2/$1" }

  - {

      route: "/api/svc3/xyz",

      dest: "http://127.0.0.3:8080/blah4/xyz",

      "ping": "http://127.0.0.3:8080/ping",

    }

srv.example.com:

  - { route: "^/api/svc2/(.*)", dest: "http://127.0.0.2:8080/blah3/$1/abc" }

這種屬于動(dòng)態(tài)提供程序,所有的文件修改都可以自動(dòng)部署。

Docker規(guī)則

Docker提供程序支持完全的自動(dòng)化發(fā)現(xiàn),而且無需額外配置,支持修改的標(biāo)簽包含:

reproxy.server

reproxy.route

reproxy.dest

reproxy.port

reproxy.ping

reproxy.enabled

工具使用

SSL支持

SSL模式(默認(rèn))可以設(shè)置為auto、static或none。如果設(shè)置為auto,則會(huì)自動(dòng)為所有發(fā)現(xiàn)的服務(wù)器發(fā)布SSL證書,用戶可以通過設(shè)置--ssl.fqdn值來修改配置。

Ping和健康檢測

Reproxy針對(duì)該功能提供了兩個(gè)節(jié)點(diǎn):

/ping:查看Reproxy的開啟和運(yùn)行情況;

/health:返回200 OK狀態(tài)碼,檢查服務(wù)器健康狀況;

管理API

這是一個(gè)可選項(xiàng),能夠使用“--mgmt.enabled”開啟,此時(shí)會(huì)在mgmt.listen上暴露兩個(gè)節(jié)點(diǎn):

GET /routes:枚舉所有發(fā)現(xiàn)的路由

GET /metrics:返回Prometheus metrics;

所有可用的應(yīng)用程序選項(xiàng)

-l, --listen=                     listen on host:port (default: 127.0.0.1:8080) [$LISTEN]

  -m, --max=                        max request size (default: 64000) [$MAX_SIZE]

  -g, --gzip                        enable gz compression [$GZIP]

  -x, --header=                     proxy headers [$HEADER]

      --signature                   enable reproxy signature headers [$SIGNATURE]

      --dbg                         debug mode [$DEBUG]

 

ssl:

      --ssl.type=[none|static|auto] ssl (auto) support (default: none) [$SSL_TYPE]

      --ssl.cert=                   path to cert.pem file [$SSL_CERT]

      --ssl.key=                    path to key.pem file [$SSL_KEY]

      --ssl.acme-location=          dir where certificates will be stored by autocert manager (default: ./var/acme) [$SSL_ACME_LOCATION]

      --ssl.acme-email=             admin email for certificate notifications [$SSL_ACME_EMAIL]

      --ssl.http-port=              http port for redirect to https and acme challenge test (default: 80) [$SSL_HTTP_PORT]

      --ssl.fqdn=                   FQDN(s) for ACME certificates [$SSL_ACME_FQDN]

 

assets:

  -a, --assets.location=            assets location [$ASSETS_LOCATION]

      --assets.root=                assets web root (default: /) [$ASSETS_ROOT]

      --assets.cache=               cache duration for assets (default: 0s) [$ASSETS_CACHE]

 

logger:

      --logger.stdout               enable stdout logging [$LOGGER_STDOUT]

      --logger.enabled              enable access and error rotated logs [$LOGGER_ENABLED]

      --logger.file=                location of access log (default: access.log) [$LOGGER_FILE]

      --logger.max-size=            maximum size in megabytes before it gets rotated (default: 100) [$LOGGER_MAX_SIZE]

      --logger.max-backups=         maximum number of old log files to retain (default: 10) [$LOGGER_MAX_BACKUPS]

 

docker:

      --docker.enabled              enable docker provider [$DOCKER_ENABLED]

      --docker.host=                docker host (default: unix:///var/run/docker.sock) [$DOCKER_HOST]

      --docker.network=             docker network [$DOCKER_NETWORK]

      --docker.exclude=             excluded containers [$DOCKER_EXCLUDE]

      --docker.auto                 enable automatic routing (without labels) [$DOCKER_AUTO]

 

file:

      --file.enabled                enable file provider [$FILE_ENABLED]

      --file.name=                  file name (default: reproxy.yml) [$FILE_NAME]

      --file.interval=              file check interval (default: 3s) [$FILE_INTERVAL]

      --file.delay=                 file event delay (default: 500ms) [$FILE_DELAY]

 

static:

      --static.enabled              enable static provider [$STATIC_ENABLED]

      --static.rule=                routing rules [$STATIC_RULES]

 

timeout:

      --timeout.read-header=        read header server timeout (default: 5s) [$TIMEOUT_READ_HEADER]

      --timeout.write=              write server timeout (default: 30s) [$TIMEOUT_WRITE]

      --timeout.idle=               idle server timeout (default: 30s) [$TIMEOUT_IDLE]

      --timeout.dial=               dial transport timeout (default: 30s) [$TIMEOUT_DIAL]

      --timeout.keep-alive=         keep-alive transport timeout (default: 30s) [$TIMEOUT_KEEP_ALIVE]

      --timeout.resp-header=        response header transport timeout (default: 5s) [$TIMEOUT_RESP_HEADER]

      --timeout.idle-conn=          idle connection transport timeout (default: 90s) [$TIMEOUT_IDLE_CONN]

      --timeout.tls=                TLS hanshake transport timeout (default: 10s) [$TIMEOUT_TLS]

      --timeout.continue=           expect continue transport timeout (default: 1s) [$TIMEOUT_CONTINUE]

 

mgmt:

      --mgmt.enabled                enable management API [$MGMT_ENABLED]

      --mgmt.listen=                listen on host:port (default: 0.0.0.0:8081) [$MGMT_LISTEN]

 

Help Options:

  -h, --help                        Show this help message

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Reproxy怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI