我的想法是这样的:
我有要连接的外部 vpn 服务。但是我是否可以设置一个使用该 vpn 连接的本地代理服务器,以便通过该代理连接的应用程序使用 vpn?这适用于 Linux 系统。
欢迎提供提示和链接!
编辑:用例:也许还有另一种方法可以做到这一点。
Router #1 - Connects by the default net provided by ISP
Router #2 - Connects by PPTP VPN to another 'ISP'
Run Code Online (Sandbox Code Playgroud)
网络中的客户端默认连接到普通路由器 #1,所有流量都由它处理。客户端有一个不同的浏览器(opera),它通过路由器 #2 上的代理连接,并在 VPN 隧道的末端结束。
这清楚吗?
我用谷歌搜索过,搜索过 StackOverflow 和这里。我仍然不能完全理解什么或为什么有人会使用 Squid。
到目前为止,我只能发现它是某种缓存,可以减少您的服务器(即 Apache)必须做的工作。那么有人可以确切地澄清 Squid 的作用,更重要的是,我为什么要使用 Squid?
我有一个大型社交网站,所以也许它会有益于提供图像或其他东西,我目前正在运行与 Apache 分开的 lighttpd,仅用于提供图像。
我用
ssh -D 1080 myhost.org
Run Code Online (Sandbox Code Playgroud)
...打开从我的工作机器到我的家用机器的 SSH 隧道,以绕过公司防火墙上的愚蠢内容过滤器。但是,这也会创建一个交互式 SSH 会话,该会话在我使用隧道的整个过程中都存在。有什么方法可以告诉 SSH 只是创建隧道而不打扰交互式会话?
我正在尝试使用 dante 设置 SOCKS 代理以进行测试。但是,在查看了有关如何执行此操作的几个教程后,我什至无法将其与 Web 浏览器一起使用。
我在 IE 和 Firefox 中都尝试过,在这两种情况下,都使用“手动代理配置”,将除 SOCKS 主机之外的所有内容留空,然后输入我的代理的 IP 和端口号(1080)。我只是收到“找不到服务器”/“加载此页面的问题”,并且在调试模式下看不到任何内容,甚至在调试模式下运行。
如果我执行“telnet 10.0.0.40 1080”,我会在 danted 调试输出中看到连接打开,所以我知道很多工作正常。
这是我的配置:
logoutput: stdout /var/log/danted/danted.log
internal: eth0 port = 1080
external: eth0
method: username none #rfc931
user.privileged: proxy
user.notprivileged: nobody
user.libwrap: nobody
connecttimeout: 30 # on a lan, this should be enough if method is "none".
client pass {
from: 10.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}
client pass {
from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}
client block {
from: …Run Code Online (Sandbox Code Playgroud) 我想知道这里是否有人可以帮助我确定在 Apache 中使用 mod deflate 的最佳标准配置。基本上,mod_deflate 建议使用以下配置立即开始:
仅压缩几种类型
AddOutputFilterByType DEFLATE text/html text/plain text/xml http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
但是,仅通过阅读文档,您就可以为所有浏览器自定义它。此外,您可以为所有不同类型的 mime 类型自定义 mod_deflate。我想知道是否有人尝试过这些设置并找到了对所有浏览器都最佳的设置。
Apache 提供的另一个示例,但如果您不了解所有配置选项,请不要使用:
<Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can …Run Code Online (Sandbox Code Playgroud) 我只在 2 个后端服务器前面设置了一个 HAProxy,有一个特定的配置:任何请求都应该转到服务器 A;但是,如果服务器 A 返回 5xx 错误代码,则所有请求都应转到备用服务器 B。当 A 返回“up”时,所有请求都应转到 A。
我正在尝试这种配置:
backend example_cluster
balance roundrobin
option httpclose
option forwardfor
option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com
http-check disable-on-404
default-server error-limit 1 on-error mark-down
redirect scheme https if !{ ssl_fc }
server node1 1.2.3.4:80 check observe layer7
server node_back 5.6.7.8:443 backup ssl verify none
Run Code Online (Sandbox Code Playgroud)
但它不起作用有两个原因:
如果我删除“option httpchk”行,以及它下面的两行;我还删除了服务器 A 中的“观察层 7”;HAProxy 通过将所有请求路由到节点 A 来工作。但是,很明显,当服务器 A 返回 500 …
我们的办公室对从我们自己的 Amazon S3 目录访问大文件的需求不断增加。能够快速访问它们对我们的业务很重要,因此我们认为现在是开始在现场保留文件副本的时候了。这不是我的专业领域,所以我希望得到一些建议。
“普通”缓存本身对我们来说是不够的,因为我们甚至想加快对任何给定文件的第一个请求。AWS CLI 能够使本地目录与 S3 保持同步,因此一个想法是在低流量时间按计划运行该目录,然后配置代理以将该目录视为其缓存(如果可能)。
另一个想法是从脚本向缓存代理发出获取请求,以按照类似的时间表保持缓存温暖。
一个警告是 S3 资产是私有的,因此我们在发出每个请求之前对它们的 URL 进行签名。这意味着代理将需要能够根据 URL 提供本地副本,不包括任何查询参数。例如,这两个 url 都应该解析为同一个缓存/镜像文件:
https://example.com/asset1.txt?signature=1https://example.com/asset1.txt?signature=2缓存的大小将以个位数 TB 为单位,处理大约 300 个活跃用户的流量。
所以最后,我的问题:
我正在尝试设置一个反向代理,以只允许几个选定的 ip 范围代理到内部主机,而我希望不在 ip 范围内的任何其他人重定向到我们的内部命名主机。在此设置中,网络服务将正常工作,而没有通过 VPN 连接到我们网络的任何人都无法导航到内部资源。我一直试图让它在没有运气的情况下工作,我的部分配置目前如下:
ProxyRequests Off
<Proxy *>
Allow from all
</Proxy>
<Location />
Allow From xxx.xxx.xxx.xxx/24 1xxx.xxx.xxx.xxx/23
Deny From All
ProxyPass http://server.local.corp:8000/
ProxyPassReverse http://server.local.corp:8000/
</Location>
Run Code Online (Sandbox Code Playgroud)
此配置似乎可以很好地阻止其他 ip 范围进行代理,但是我不清楚如何为其他人添加重定向语句。
编辑 从第一个答案中获取建议我的代码现在看起来像:
<If "%{REMOTE_ADDR} -ipmatch 'xxx.xxx.xxx.xxx/24'">
ProxyPass / http://server.local.corp:8000/
ProxyPassReverse / http://server.local.corp:8000/
</If>
Run Code Online (Sandbox Code Playgroud)
并且 apache 在重启时抛出以下错误:
ProxyPass cannot occur within <If> section
Action 'configtest' failed.
The Apache error log may have more information.
Run Code Online (Sandbox Code Playgroud) 我有一个 Python 脚本,它应该从我们的服务器到互联网访问各种 Web API。问题是,在支持 NTLM 身份验证方面,我所看到的 Python 支持非常差。这会导致我们的公司代理服务器始终返回 HTTP 代码 407。我最初的想法是使用 IIS 和应用程序请求路由模块设置本地代理服务器,它将在处理 NTLM 身份验证时将所有请求转发到我们的公司代理。这种方法的问题在于它似乎没有转发我的 NTLM 凭据,当前用户正在从中运行 Python 脚本。
这种方法会奏效吗?如果是这样,我该如何实施?
我在配置 nginx 时遇到问题,我在网上搜索了解决方案,我有一些零碎的东西,但我仍然无法提出正确的配置。
我已经注册了一个域,比方说 - www.example.com。我已经在注册商网站上配置了所有内容,ping www.example.com 和 www.*.example.com 成功。
我的机器上运行着 Apache Tomcat,监听端口 8080。我想设置动态 proxy_pass。因此,如果我在 tomcat 中运行应用程序 MyApp 并可通过 localhost:8080/MyApp 访问,我希望能够使用 www.MyApp.example.com 访问它,所以基本上子域将是应用程序在 tomcat 中的名称。
这是我的 nginx 配置:
server {
server_name ~^(www\.)?(?<sub_domain>.+)\.example\.com$;
listen 80;
location / {
proxy_pass http://localhost:8080/$sub_domain/;
}
}
Run Code Online (Sandbox Code Playgroud)
当我访问 www.myapp.example.com 时,我被重定向到http://localhost:8080/myapp- 我的意思是我最终进入了http://localhost:8080/myapp我的浏览器。
但是,如果我将 nginx 设置中的正则表达式更改为:
server {
server_name www.myapp.example.com myapp.example.com
listen 80;
location / {
proxy_pass http://localhost:8080/myapp/;
}
}
Run Code Online (Sandbox Code Playgroud)
然后一切都像魅力一样。我知道它必须对解析器做些什么,我已经尝试将解析器放在 nginx 中,但它没有任何改变。
我在这里缺少什么?
//编辑:
这是我的配置。我仍然被重定向到 www.myapp.example.com/myapp/login 而不是 www.myapp.example.com/login。我已经改变了正则表达式,还是一样。
http {
upstream backend { …Run Code Online (Sandbox Code Playgroud) proxy ×10
socks ×2
amazon-s3 ×1
apache-2.2 ×1
apache-2.4 ×1
dante ×1
haproxy ×1
linux ×1
mod-deflate ×1
mod-proxy ×1
networking ×1
nginx ×1
proxypass ×1
squid ×1
ssh ×1
tunneling ×1
virtualhost ×1
vpn ×1
windows ×1