ERGO代理 - 本地域管理的反向代理。
通过自定义的本地域,可以轻松地在不同端口上运行的多个应用程序的管理。
在示例中查看更多
python3 -m http.server 8800 & # launch a web server listening on 8800
echo " http://localhost:8800 mylocalsite " > .ergo # adds a service "mylocalsite" to ergo
ergo local & # it may need sudo since it binds to port 80
curl http://mylocalsite.localhost # make a HTTP request to the ergo service :) Ergo的目标是成为一个简单的反向代理,遵循Unix哲学仅做一件事并做得很好的哲学。简单意味着不涉及魔法。只是一个灵活的反向代理,它扩展了众所周知的/etc/hosts声明。
反馈
该项目正在不断进行开发,但是它可以使用。随时提供反馈和开放问题。欢迎所有建议和贡献。 :)
为了获得帮助和反馈,您可以在https://gopher.slack.com上的#ergo-proxy频道找到我们
在本地处理多个应用程序,并且必须记住代表每个微服务的每个端口令人沮丧。我想要一种将每个服务分配一个适当的本地域的简单方法。 ERGO解决了这个问题。
重要的是,这些是安装ERGO的唯一官方方法。
brew tap cristianoliveira/tap
brew install ergo
安装最新的官方版本
curl -s https://raw.githubusercontent.com/cristianoliveira/ergo/master/install.sh | sh
或安装特定版本
curl -s https://raw.githubusercontent.com/cristianoliveira/ergo/master/install.sh v0.2.5 | sh
来自Powershell Run:
Invoke-WebRequest https://raw.githubusercontent.com/cristianoliveira/ergo/master/install.ps1 -out ./install.ps1; ./install.ps1
您还可以在Release中找到Windows的可执行文件。
免责声明:我每天使用基于UNIX的系统,因此我无法单独测试每个构建。 :(
nix profile install ' github:cristianoliveira/nixpkgs#ergoProxy '更多示例请参见:https://github.com/cristianoliveira/nixpkgs
go install github.com/cristianoliveira/ergo
确保您的路径中有$GOPATH/bin : export PATH=$PATH:$GOPATH/bin
ERGO在当前目录中寻找一个.ergo文件。它必须包含遵循与/etc/hosts ( domain + space + url )相同格式的服务的名称和URL。主要区别在于它还考虑了指定的端口。
运行ergo local它将尝试绑定到localhost:80 ,并以“子”的方式收听对您的服务的请求。 http://serviceone.localhost和http://servicetwo.localhost 。 (检查示例以获取更多)
注意:它可能需要苏多(Sudo)绑定到端口80。
您可以通过ergo local -p <port>给它一个不同的端口,并通过http://serviceone.localhost:<port>访问它。
您还可以在/etc/hosts中添加不同的回环,例如echo '127.0.0.1 localapp' >> /etc/hosts并运行ergo local -domain localapp以通过http://serviceone.localapp和http and http and http://servicetwo.localapp访问您的服务。
您需要在系统网络配置上设置http://127.0.0.1:2000/proxy.pac配置。
ERGO带有一个设置命令,可以为您配置它。当前支持的系统是:
ergo setup < operation-system >如果发生错误 /行不通,请查看下面的详细配置会话。
echo "ergoproxy http://localhost:3000" > .ergo
ergo run
现在,您应该能够访问: http://ergoproxy.dev 。 ERGO重定向以.dev结尾的任何内容都属于配置的URL。
您不应使用默认的.dev域,我们建议使用.test (请参阅#58),除非您的服务支持HTTPS,并且您已经拥有证书
set ERGO_DOMAIN=.test
echo "ergoproxy http://localhost:3000" > .ergo
ergo list # you shouldn't see any quotas in the output
ergo run
现在您应该能够访问: http://ergoproxy.test 。 ERGO重定向以.test结尾为.TEST到配置的URL。
简单,对吗?不涉及魔法。
您想添加更多服务吗?很容易,只需在.ergo中添加更多行:
echo "otherservice http://localhost:5000" >> .ergo
ergo list
ergo run
重新启动ERGO服务器并访问: http://otherservice.dev
ergo add otherservice http://localhost:5000是将行附加到./.ergo速记
ERGO接受不同的配置,例如在不同的port (默认值:2000)和更改domain (默认:DEV)。您可以在ERGO的帮助运行ergo -h上找到所有这些配置。
为了使用ERGO域,您需要将其设置为代理。设置http://127.0.0.1:2000/proxy.pac proxy.pac on:
Network Preferences > Advanced > Proxies > Automatic Proxy Configuration
Settings > Network and Internet > Proxy > Use setup script
在Ubuntu上
System Settings > Network > Network Proxy > Automatic
对于其他分布,请检查您的网络管理器并查找代理配置。使用浏览器配置作为替代方案。
可以将浏览器配置为使用特定代理。使用此方法作为整个系统范围配置的替代方法。
请记住,如果您在正确设置代理之前请求该站点,则必须重置浏览器的缓存或更改服务的名称。在incognito Windows缓存中,默认情况下是禁用的,因此,如果您不想删除缓存,则可以使用它们
另外,您不应该使用默认的.dev域,我们建议使用.test (请参阅#58),除非您的服务支持HTTPS,并且您已经拥有证书
退出Chrome并使用以下选项启动它:
# Linux
$ google-chrome --proxy-pac-url=http://localhost:2000/proxy.pac
# OS X
$ open -a " Google Chrome " --args --proxy-pac-url=http://localhost:2000/proxy.pacAutomatic Proxy configuration URL并输入值http://localhost:2000/proxy.pac以下 network.proxy.autoconfig_url > http://localhost:2000/proxy.pac
为了将ERGO用作终端上的Web代理,您必须设置http_proxy变量。 (仅适用于Linux/OSX)
export http_proxy= " http://localhost:2000 "作为替代方案,您可以在内部/resources中看到用于运行短暂设置的脚本。这些脚本仅在ergo运行时才设置代理。
git checkout -b my-new-featuregit commit -am 'Add some feature'git push origin my-new-feature最小必需的Golang版本go1.22 。我们建议使用GVM来管理您的GO版本。
然后简单地运行:
gvm use $( cat .gvmrc ) make allmake test
make test-integration # Requires admin permission so use it carefully.麻省理工学院