标签: reverse-proxy

我需要一个 SSH 反向代理解决方案

嗨,这是一种情况,我在公司数据中心有一台用于项目的服务器。我在端口 22 上可以通过 SSH 访问这台机器。在这台服务器上运行着一些虚拟机,然后在许多其他操作系统正在运行的每件事的背后。现在,由于我在数据中心防火墙后面,我的主管问我是否可以做一些事情,让互联网上的许多人直接访问这些虚拟机。我知道如果我被允许在 22 以外的端口上获得流量,那么我可以进行端口转发。但是由于我不允许这样做,所以在这种情况下可以解决什么问题。想要连接的人可能完全是白痴。他们可能只是在他们的机器上打开腻子就很高兴,甚至可能是 filezilla。

我手上没有防火墙,也没有打开 22 以外的任何端口,事实上,即使我要求他们也不允许打开。2 次 SSH 不是我的主管想要的东西。

ssh reverse-proxy ssh-tunnel linux-networking

10
推荐指数
1
解决办法
3万
查看次数

通过中间服务器的远程桌面的 SSH 隧道第二部分

之前问过如何使用中间服务器配置 2 个 SSH 隧道,以便通过它们运行远程桌面,我设法让它工作。现在,我正在尝试做同样的事情,使用相同的机器,但顺序相反。这是设置:

  1. 位于专用网络中的 Windows 7 PC,位于防火墙后面。
  2. 公共访问 Linux 服务器,可以访问 PC。
  3. 家里的 Windows 7 笔记本电脑,我希望从 PC 上进行远程桌面。

我在笔记本电脑上使用 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 …

proxy remote-desktop reverse-proxy ssh-tunnel

10
推荐指数
1
解决办法
9444
查看次数

Apache反向代理访问控制

我有一个 Apache 反向代理,目前正在为几个站点进行反向代理。但是,我现在要添加一个只能由某些 IP 访问的新站点(我们称之为 newsite.com)。使用 Apache 作为反向代理是否可行?

我将 VirtualHosts 用于正在代理的站点。我曾尝试将 Allow/Deny 指令与 Location 语句结合使用。例如:

<VirtualHost *:80>  
Servername newsite.com   
<Location http://newsite.com>
Order Deny,Allow
Deny from all
Allow from x.x.x.x
</Location>
<IfModule rewrite_module>
 RewriteRule ^/$ http://newsite.internal.com [proxy]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

我还尝试在代理指令中为站点配置允许/拒绝,例如

<Proxy http://newsite.com/>
  Order deny,allow
  Deny from all
  Allow from x.x.x.x
</Proxy>
Run Code Online (Sandbox Code Playgroud)

但是,对于其余的代理站点,我仍然有这个定义。

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
Run Code Online (Sandbox Code Playgroud)

无论我做什么,它似乎都可以从任何地方访问。这是因为所有其他代理站点的定义。是否有应用代理指令的顺序。我在 * 之前和之后都有 newsite ,也在 VirtualHost 声明中。

reverse-proxy apache-2.2

9
推荐指数
2
解决办法
1万
查看次数

nginx - 在负载测试下,connect() 上游失败

我一直在wrk对我的 nginx 反向代理进行一些负载测试-> 我的 Web 应用程序设置,我注意到当我达到 1000 多个并发连接时,nginx 开始返回 502s 和以下错误消息:

2015/04/17 20:45:26 [crit] 6068#0: *1116212677 connect() to \
127.0.0.1:3004 failed (99: Cannot assign requested address) \
while connecting to upstream, client: xxx.xxx.xx.165, server: \
foo.bar.com, request: "GET /my/route HTTP/1.1", upstream: \
"http://127.0.0.1:3004/my/route", host: "foo.bar.com"
Run Code Online (Sandbox Code Playgroud)

wrk命令是:

wrk -t10 -c500 -d5m "https://foo.bar.com/my/route" -H "Accept: application/json"
Run Code Online (Sandbox Code Playgroud)

我想弄清楚这里可能出了什么问题。我的 Web 应用程序正在侦听 nginx 在端口 3004 代理的请求。nginx 端口是否用完了?Web 应用程序是否无法处理这么多请求?请求是否超时?我不清楚这一点,希望对它有更深入的了解。

resources nginx load-testing port reverse-proxy

9
推荐指数
1
解决办法
5314
查看次数

使用 Nginx 作为多台服务器的反向代理

我正在尝试将 nginx 配置为 LAN 上多个服务器的反向代理。他们应该在我的 WAN 上使用不同的子域。我的配置是这样的:

@ReverseProxy:/etc/nginx/sites-enabled$ cat reverseproxy 
server { 
  server_name DOMAIN.eu;

  # app1 reverse proxy follow
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://10.0.2.5:80;

}

server { 
  server_name Subdomain.domain.eu;

  # app2 reverse proxy settings follow
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://10.0.2.33:80;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到此错误并且无法再进一步....

@ReverseProxy:/etc/nginx/sites-enabled$ nginx -t
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2009/01/04 12:22:13 [warn] 1302#0: the "user" directive makes sense …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy

9
推荐指数
2
解决办法
6万
查看次数

Nginx 作为服务于 301 的反向代理

我对 NGINX 的经验很少。我试图将它用作一些运行 node.js 的 docker 容器的反向代理。目标是所有请求都将通过 NGINX 汇集。根据路由(url 路径),某个路由domain.com/graphql将通过 NGINX 传递到不同的 docker 容器。这domain.com/graphql基本上是我的 API 端点。

我遇到的问题是,客户端上的 JS 发出的所有 Ajax/Relay 客户端请求都作为 301 从 NGINX 传递

要求:

Request URL:http://domain.com/graphql
Request Method:POST
Status Code:301 Moved Permanently
Remote Address:192.168.99.100:80
Response Headers
view source
Connection:keep-alive
Content-Length:185
Content-Type:text/html
Date:Thu, 08 Sep 2016 15:14:02 GMT
Location:http://domain.com/graphql/
Server:nginx/1.11.3
Request Headers
view source
accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8,it;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Content-Length:620
content-type:application/json
Host:nomralph.com
Origin:http://domain.com
Pragma:no-cache
Referer:http://domain.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy

9
推荐指数
1
解决办法
1万
查看次数

ProxyPass 将 WebSocket 连接传递到 UNIX 套接字

在 Apache 2.4 中,您可以使用以下命令将HTTP连接反向代理到本地Unix套接字:[1]

ProxyPass unix:/path/to/app.sock|http://example.com/app/name
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法将WebSocket连接反向代理到本地TCP套接字:[2]

ProxyPass ws://127.0.0.1:12345/app/name
Run Code Online (Sandbox Code Playgroud)

但是如何将WebSocket连接反向代理到Unix套接字?[?]

reverse-proxy proxypass socket apache-2.4 websocket

8
推荐指数
1
解决办法
7481
查看次数

带有 httpd mod_proxy_balancer 的“没有对 URL 有效的协议处理程序”

我正在尝试为具有 localhost 静态资源副本的反向代理服务器设置故障转移,这些资源通常由内容管理系统提供服务。我曾经wget为了故障转移的目的抓取动态站点的静态副本。

我尝试使用类似于Apache 的 ProxyPass 指令的回退位置的配置让事情开始,这是一个相当简单的,但我在标题中遇到错误。

这是我的(经过消毒的)代理配置:

DocumentRoot /var/www/www.example.com/htdocs

ProxyRequests Off
ProxyPreserveHost On

ProxyPass "/site/" "balancer://cms"
ProxyPassReverse "/site/" "balancer://cms"
ProxyPassReverse "/site/" "http://ip-10-1-1-229.ec2.internal/site/"

<Proxy "balancer://cms">
    #BalancerMember "http://ip-10-1-1-229.ec2.internal/site/" loadfactor=1
    # For localhost services, a backup of the CMS's site
    BalancerMember "http://127.0.0.1/site-backup/www.example.com/site/" loadfactor=10 status=+H
</Proxy>

<Directory "/var/www/www.example.com/htdocs/site-backup">
  Order allow,deny
  Allow from all

  Options Indexes FollowSymlinks
  DirectoryIndex index.html
</Directory>
Run Code Online (Sandbox Code Playgroud)

(在这里,我已经注释掉了进入真正 CMS 系统的平衡器成员——那部分工作得很好——这样我就可以测试本地的静态副本。)

有一个index.html文件,/var/www/www.example.com/site-backup/www.example.com/当我尝试点击时它确实被加载了http://www.example.com/site/,但是页面的其他资源(CSS、图像等)都没有被加载。他们在页面中有 URL,例如:

我有一个文件,foo.png在这个位置:

/var/www/www.example.com/htdocs/site-backup/www.example.com/site/sites/default/files/foo.png
Run Code Online (Sandbox Code Playgroud)

但是当浏览器加载该图像时,我会收到500 Internal …

reverse-proxy mod-proxy apache-2.4

8
推荐指数
2
解决办法
5万
查看次数

IIS 没有设置 X-FORWARDED-HOST

我有一个 IIS 服务器 [在 WinServer 2016 上],它充当一些 Kestrel Web 服务器的反向代理。现在我正在尝试设置 IIS 以转发所有 X-Forwarded-* 标头。对于 X-Forwarded-For 和 X-Forwarded-Proto 标头,一切正常,但不适用于 X-Forwarded-Host。

这是服务器级别的“允许的服务器变量”:

允许的服务器变量

这是我在调试器中看到的,当 HTTP 请求命中 Kestrel 网络服务器时

HTTP 标头

不幸的是,我无法从 PROD 服务器创建转储,但由于一些功能无法正常工作,情况应该类似于 DEV 环境。

在阅读了几篇关于如何将 IIS 设置为反向代理的文章后,我的印象是所有 X-Forwarded-* 标头都应该自动添加。或者,XFH 是一个例外,我需要手动设置它吗?

我将不胜感激任何形式的帮助!

iis reverse-proxy

8
推荐指数
2
解决办法
1万
查看次数

Apache 反向代理到 docker 容器

我有一个在 docker 容器上运行的网站,并且我在主机的 apache 上创建了一个 VirtualHost,它对容器(在主机的 8280 端口上)执行反向代理。所以我有:

<VirtualHost *:443>
    ServerName www.example.com
    DirectoryIndex index.php index.html
    SetOutputFilter SUBSTITUTE,DEFLATE

    ProxyPass / http://localname:8280/
    ProxyPassReverse / http://localname:8280/

    Substitute "s|http://localname:8280/|https://www.example.com/|i"

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateKeyFile /path-to/privkey.pem
    SSLCertificateFile /path-to/cert.pem
    SSLCertificateChainFile /path-to/chain.pem

    <Proxy *>
        Order deny,allow
        Allow from all
        Allow from localhost
    </Proxy>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias www.example.com

    Redirect permanent / https://www.example.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

代理运行良好,我在浏览器中写入 www.example.com 时有响应,但我的所有链接都指向http://localname:8280(如浏览器控制台中所示)和混合内容错误,这就是为什么我已经放置了替代指令,但它不起作用。

我正在使用 apache 文档中 mod_substitute 的配置。

https://httpd.apache.org/docs/2.4/mod/mod_substitute.html

但这不起作用,任何变化。docker 容器基于默认配置的 bitnami/apache 镜像。

任何帮助,将不胜感激。

reverse-proxy docker apache-2.4

8
推荐指数
1
解决办法
2万
查看次数