嗨,这是一种情况,我在公司数据中心有一台用于项目的服务器。我在端口 22 上可以通过 SSH 访问这台机器。在这台服务器上运行着一些虚拟机,然后在许多其他操作系统正在运行的每件事的背后。现在,由于我在数据中心防火墙后面,我的主管问我是否可以做一些事情,让互联网上的许多人直接访问这些虚拟机。我知道如果我被允许在 22 以外的端口上获得流量,那么我可以进行端口转发。但是由于我不允许这样做,所以在这种情况下可以解决什么问题。想要连接的人可能完全是白痴。他们可能只是在他们的机器上打开腻子就很高兴,甚至可能是 filezilla。
我手上没有防火墙,也没有打开 22 以外的任何端口,事实上,即使我要求他们也不允许打开。2 次 SSH 不是我的主管想要的东西。
我之前问过如何使用中间服务器配置 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 …
我有一个 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 声明中。
我一直在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 应用程序是否无法处理这么多请求?请求是否超时?我不清楚这一点,希望对它有更深入的了解。
我正在尝试将 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 的经验很少。我试图将它用作一些运行 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) 在 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套接字?[?]
我正在尝试为具有 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 …
我有一个 IIS 服务器 [在 WinServer 2016 上],它充当一些 Kestrel Web 服务器的反向代理。现在我正在尝试设置 IIS 以转发所有 X-Forwarded-* 标头。对于 X-Forwarded-For 和 X-Forwarded-Proto 标头,一切正常,但不适用于 X-Forwarded-Host。
这是服务器级别的“允许的服务器变量”:
这是我在调试器中看到的,当 HTTP 请求命中 Kestrel 网络服务器时
不幸的是,我无法从 PROD 服务器创建转储,但由于一些功能无法正常工作,情况应该类似于 DEV 环境。
在阅读了几篇关于如何将 IIS 设置为反向代理的文章后,我的印象是所有 X-Forwarded-* 标头都应该自动添加。或者,XFH 是一个例外,我需要手动设置它吗?
我将不胜感激任何形式的帮助!
我有一个在 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 ×10
apache-2.4 ×3
nginx ×3
ssh-tunnel ×2
apache-2.2 ×1
docker ×1
iis ×1
load-testing ×1
mod-proxy ×1
port ×1
proxy ×1
proxypass ×1
resources ×1
socket ×1
ssh ×1
websocket ×1