希望你们能帮助我解决我遇到的代理问题。
我已经拥有的
我已经设置了一个 apache http 反向代理,将请求从 *.proxy.domain 代理到 *.intern.domain。apache 是从外部网络访问我的内部 web 应用程序的唯一方法。
例子:
app.proxy.domain -> app.intern.domain
mail.proxy.domain -> mail.intern.domain
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我有以下问题。
问题
我想代理以下请求:
app.proxy.domain -> app.internal.domain
app-dev.proxy.domain -> app-dev.internal.domain
Run Code Online (Sandbox Code Playgroud)
这没问题,但不幸的是 app-dev 服务器运行 app 服务器 webapplication 的精确副本,并且这个 webapplication 只响应它的主机名(app.intern.domain)
所以我需要做的是代理以下内容
app.proxy.domain -> app.internal.domain (10.0.1.1)
app-dev.proxy.domain -> app.internal.domain (10.0.1.2)
Run Code Online (Sandbox Code Playgroud)
我可以通过在 /etc/hosts 中添加“10.0.1.2 app.internal.domain”来做第二件事,但这也意味着 app.proxy.domain 将登陆开发服务器。
我正在寻找一个选项,仅在 app-dev.proxy.domain 的 vhost 配置文件中设置 /etc/hosts 条目,以便所有其他 vhost 配置都将仅使用 app.intern.domain 的 DNS。
想法...
有没有办法告诉 apache 配置,
ProxyPass / http://10.0.1.2/
Run Code Online (Sandbox Code Playgroud)
但是发送 app.intern.domain 作为主机名?
编辑 dev-servers 网络应用程序以收听 app-dev 是没有选择的,因为它应该是一个精确的副本(不是我的决定......)
谢谢!
我的两个站点都有 HAProxy,其中一个是公共站点,一个是私有站点。
www.mysite.com private.mysite.com
Atm,我正在使用这样的 haproxy:
frontend mysite_https
bind *.443 ssl crt /etc/mycert.pem ca-file /etc/myca.pem verify optional no-sslv3
mode http
acl domain_www hdr_beg(host) -i www.
acl domain_private hdr_beg(host) -i private.
acl path_ghost path_beg /ghost/
acl clientcert ssl_c_used
redirect location https://www.example.com if path_ghost !clientcert
redirect location https://www.example.com if !domain_www !clientcert
use_backend bknd_private if domain_private
use_backend bknd_www if domain_www
default_backend bknd_www
Run Code Online (Sandbox Code Playgroud)
这应该做的是要求客户端证书(可选)并继续。如果域不是 www.example.com 且访问者无法提供正确的证书或路径为 /ghost/ 且访问者无法提供正确的证书,则应重定向到https://www.example.com
So far, this works fine. However, I got complaints by Mac users browsing my site …
我对盐相当陌生,所以我可能错过了一些东西,但我无法弄清楚。
我使用 salt 作为命令执行工具(目前没有配置管理)。我找不到一种方法来使用盐从仆从中获取配置并将它们放入 git 存储库中。
我最终试图实现的是给盐主一个像这样的配置文件列表
/etc/ssh/ssh_config
/etc/vim/vimrc
etc.
Run Code Online (Sandbox Code Playgroud)
并让 salt-master 运行获取这些文件,把它放在像这样的文件夹中
/srv/salt/minions/configs/minion01/etc/ssh/ssh_config
/srv/salt/minions/configs/minion02/etc/ssh/ssh_config
Run Code Online (Sandbox Code Playgroud)
然后我可以让主将整个内容推送到我们的 git 服务器并让所有配置版本化。
我知道 salt 可以处理状态,但我发现的一切都是将文件从 master 推送到 minion 以保持应有的状态,但我只想从所有服务器收集所有更新配置并自动对其进行版本控制.
有一个命令叫
salt \* cp.push /etc/ssh/ssh_config
Run Code Online (Sandbox Code Playgroud)
将配置文件推送到 /var/cache/salt/minion/minion01/files/etc/ssh/ssh_config,这看起来很完美,但我不知道如何在文件更改时告诉 salt 这样做(我们有很多一些服务器和许多版本的配置......)并且只在它发生变化时才获取它,所以我不必每五分钟左右获取所有文件(通过cron)。
任何人都知道如何用盐来做到这一点?
问候, 莫尔菲姆