您好,登錄后才能下訂單哦!
這篇文章主要介紹了Reproxy怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Reproxy是一個簡單且功能強大的邊緣HTTP(S)服務器和反向代理工具,該工具支持多種提供程序,比如說Docker或文件等等。這些提供程序負責給工具提供有關請求服務器的基礎信息、URL地址、目標URL和運行狀況檢查URL等數據,能夠以單個二進制文件或Docker容器的形式進行分發。
基于Let’s Encrypt的自動化SSL終止;
支持用戶提供的SSL證書;
簡單但靈活的代理規則;
靜態命令行代理規則提供程序;
基于文件的動態代理規則提供程序;
具有自動發現功能的Docker提供程序;
支持多個(虛擬)主機;
可選流量壓縮;
用戶定義的限制和超時;
單二進制文件發布;
Docker容器發布;
內置靜態資產服務器;
具有路由信息的管理服務器;
廣大研究人員可以訪問該項目的Releases頁面選擇和獲取對應版本的Reproxy。
Reproxy的Docker容器版本可以在Docker Hub上獲取到,運行下列命令即可:
docker pull umputun/reproxy
或
docker pull ghcr.io/umputun/reproxy
我們可以通過各種提供程序來給工具提供代理規則,當前支持文件、Docker和靜態規則三種形式。每一個提供程序都可以為代理請求和靜態(資產)定義多個路由規則,用戶可以同時設置多個提供程序。
這是最簡單的提供程序,可以直接在命令行工具中定義所有需要映射的規則,而且還支持定義多個規則。其中,每個規則需要用3或4個逗號對元素進行分隔,元素包含服務器、源URL、目的地址和[ping-url]:
*,^/api/(.*),https://api.example.com/$1 example.com,/foo/bar,https://api.example.com/zzz,https://api.example.com/ping
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" }
這種屬于動態提供程序,所有的文件修改都可以自動部署。
Docker提供程序支持完全的自動化發現,而且無需額外配置,支持修改的標簽包含:
reproxy.server reproxy.route reproxy.dest reproxy.port reproxy.ping reproxy.enabled
SSL模式(默認)可以設置為auto、static或none。如果設置為auto,則會自動為所有發現的服務器發布SSL證書,用戶可以通過設置--ssl.fqdn值來修改配置。
Reproxy針對該功能提供了兩個節點:
/ping:查看Reproxy的開啟和運行情況; /health:返回200 OK狀態碼,檢查服務器健康狀況;
這是一個可選項,能夠使用“--mgmt.enabled”開啟,此時會在mgmt.listen上暴露兩個節點:
GET /routes:枚舉所有發現的路由 GET /metrics:返回Prometheus metrics;
-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
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Reproxy怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。