Microsoft 有很多关于 IIS7 的新负载平衡和请求路由模块的文档,位于此处:http : //blogs.iis.net/bills/archive/2009/02/16/iis7-request-routing-and-load -balancing-module-released.aspx,但我想知道是否有人有在生产中使用它的经验。使用此模块而不是其他解决方案(例如 HAProxy)有哪些优点/缺点?
是否存在 yum 的缓存代理,类似于 Debian 存储库的缓存代理?
有没有办法让reprepro的行为与大约相同?我听说 approx 不太稳定;此外,我更喜欢使用 reprepro,这样我就可以使用我现有的 Web 服务器来为存储库提供服务。
我的机器连接在本地局域网中。连接到互联网流量通过代理服务器。我对代理服务器的理解是它代表原始请求发送者发送请求。所以当服务器回复时,它认为它是客户端将回复发送给代理。然后代理将回复转发到我的机器。
以网络地址转换为例。您的请求通过 nat 路由器。然后 nat 路由器为您提供一个公共 IP 地址并将此映射存储在其表中。回复(来自服务器)被发送到这个分配的公共地址。nat 路由器从表中解析为您的本地 IP 地址并将回复转发到您的机器。
我的问题为什么当代理本身能够调解流量并为您提供对互联网的访问时需要 nat?
我正在为静态文件运行 Nginx 前端,并为 PHP 和乘客代理到 Apache 后端,使用 Apache 的 mod_rpaf 在后端设置正确的远程 IP 地址。一切正常,直到我升级到 Ubuntu 12.04(精确)。现在 Apache 报告来自 127.0.0.1 的所有连接。
这是相关的配置。升级后这里没有任何变化。
nginx:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)
mod_rpaf:
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ::1
RPAFheader X-Forwarded-For
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我%{X-Forwarded-For}i在我的 Apache LogFormat 指令中使用,并且访问日志显示正确的远程地址,所以我知道 Nginx 正在正确传递地址。
在phpinfo()测试中,HTTP_X_FORWARDED_FOR 显示正确的远程地址,但 REMOTE_ADDR 是 127.0.0.1。这也反映在 PHP 应用程序中,例如 WordPress 评论。
我试过将 Nginx 和 mod_rpaf 切换到 X-Real-IP 没有效果。
我错过了什么改变了吗?
相关版本信息,从 Ubuntu 存储库安装的所有内容:
Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6
我之前问过如何使用中间服务器配置 2 个 SSH 隧道,以便通过它们运行远程桌面,我设法让它工作。现在,我正在尝试做同样的事情,使用相同的机器,但顺序相反。这是设置:
我在笔记本电脑上使用 Putty 创建从它到 Linux 服务器的反向隧道:R60666 localhost:3389.
我在 PC 上使用 Putty 创建从它到 Linux 服务器的常规隧道:L60666 localhost:60666.
我通过 SSH 连接到 Linux 服务器并运行 telnet localhost 60666,它似乎产生了预期的输出,如我在此处收到的调试提示中所述。
我尝试将远程桌面从 PC 连接到笔记本电脑:localhost:60666. 它询问我的用户名和密码,我单击确定并锁定我在笔记本电脑上的当前会话(因此我在笔记本电脑上看到欢迎屏幕而不是我的桌面),它在远程桌面屏幕中显示“欢迎”消息,然后它只是变黑。它不会断开连接,不会提供任何错误,而且我无法在远程桌面屏幕中执行任何操作。我在 Windows XP 笔记本电脑上尝试了相同的设置,但遇到了相同的症状。我还尝试使用与 60666 不同的端口,但没有任何改变。有人知道我做错了什么吗?
更新:正如@jwinders 所指出的,我无法telnet PC 3389直接从 Linux 服务器运行。由于 Windows 防火墙有一个规则允许端口 3389 上的所有连接,我不知道是什么阻止了它。幸运的是,我能够创建从 Linux 机器到 PC 的 SSH 隧道ssh …
这是我的问题的一些背景:
我尝试的解决方案是在具有静态 IP 的单独服务器上使用 Squid 将代理请求从 Heroku 转发到外部服务。这样,外部服务总是看到代理服务器的静态 IP,而不是 Heroku 服务的动态 IP。
由于我的代理服务器不能依赖 IP 地址进行身份验证(这就是开始的问题!),它必须依赖用户名和密码。此外,用户名和密码不能以明文传输,因为如果攻击者要拦截明文,那么他们可以冒充我连接到我的代理,使用我代理的静态 IP 发出出站请求,从而逃避外部Web 服务的防火墙。
因此,Squid 代理必须只接受通过 HTTPS 的连接,而不是 HTTP。(与外部 Web 服务的连接可能是 HTTP 或 HTTPS。)
我在 CentOS 6.5.x 上运行 Squid 3.1.10,这是我squid.conf目前的情况。仅出于故障排除目的,我暂时启用了 HTTP 和 HTTPS 代理,但我只想使用 HTTPS。
#
# Recommended minimum configuration:
#
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Example …Run Code Online (Sandbox Code Playgroud) 我正在使用 haproxy 为在单个服务器上运行的多个应用程序直接路由。对于正在使用的域之一,有几十个子域应该指向少数应用程序之一。
目前,我在单独的一行中列出了所有这些子域。我的前端配置如下所示:
frontend http-in
bind *:80
acl alpha hdr(host) -i alpha.com
acl beta hdr(host) -i beta.com
acl gamma00 hdr(host) -i apple.gamma.com
acl gamma01 hdr(host) -i banana.gamma.com
acl gamma02 hdr(host) -i cherry.gamma.com
acl gamma03 hdr(host) -i durian.gamma.com
acl gamma04 hdr(host) -i elderberry.gamma.com
acl gamma05 hdr(host) -i fig.gamma.com
acl gamma06 hdr(host) -i grapefruit.gamma.com
acl gamma hdr(host) -i gamma.com
use_backend a if alpha
use_backend b if beta
use_backend sub1 if gamma00
use_backend sub1 if gamma01
use_backend sub1 if gamma02
use_backend sub2 …Run Code Online (Sandbox Code Playgroud) 我正在使用 nginx 来提供静态文件并将其他请求代理到某个 Tomcat 实例。问题是我不知道如何选择 nginx 使用哪个 IP 地址连接到 Tomcat。
每个 Tomcat 实例只接受来自特定 IP 地址的 HTTP 连接。我的服务器拥有所有这些 IP。我只是无法选择 nginx 使用哪一个。
这是我的配置文件:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
location /integracao/ {
proxy_pass http://X.X.X.X:9080/integracao/;
}
location /solr/ {
proxy_pass http://Y.Y.Y.Y:8080/solr/;
}
Run Code Online (Sandbox Code Playgroud)
我的服务器有一个接口,有两个 IP 地址:A 和 B。我需要使用 IP A 连接到第一个 Tomcat,使用 IP B 连接到 Solr。
有谁知道怎么做?
我的 Web 主机上有两个 proxypass 规则,一个指向用于缓存目的的本地 varnish 实例,我希望为其启用 ProxyPreserveHost,另一个指向第三方托管站点,我希望为其禁用 ProxyPreserveHost。无论如何,我可以在每个规则/通行证的基础上做到这一点吗?
以下是 Nginx 服务器配置示例。如果没有“魔法护身符”位置块,代理的错误内容会导致 Nginx 404 页面,而不是提供自定义的错误页面。
删除 proxy_intercept_errors 指令会提供带有正确 http 错误代码标头的正确代理错误页面。
无论魔法护身符是否存在,非代理错误页面都会正确呈现。
关于究竟发生了什么的任何想法?
server {
server_name mydomain.com "";
listen 80;
root /var/www;
error_page 400 401 402 403 404 500 501 502 503 504 /admin/error_page.htm;
proxy_intercept_errors on;
location /proxy/ {
proxy_read_timeout 60s;
proxy_set_header Host $host;
proxy_pass http://myservers;
}
location /test404/ {
return 404;
}
location /admin/ { # this line constitute a magical talisman that fixes proxied error interception(???)(!)
rewrite ^(/admin)(.*)$ /admin$2 break;
}
}
Run Code Online (Sandbox Code Playgroud) proxy ×10
nginx ×3
apache-2.2 ×2
apt ×1
cache ×1
haproxy ×1
heroku ×1
https ×1
iis-7 ×1
ip ×1
ip-address ×1
mod-proxy ×1
mod-rpaf ×1
nat ×1
networking ×1
router ×1
squid ×1
ssh-tunnel ×1
ubuntu ×1
yum ×1