Questions tagged «reverse-proxy»


26
如何从Docker容器内部连接到计算机的本地主机?
所以我有一个Nginx在docker容器中运行,我有一个mysql在本地主机上运行,​​我想从我的Nginx内部连接到MySql。MySql在localhost上运行,并且没有将端口暴露给外界,因此它绑定在localhost上,而不绑定在计算机的IP地址上。 有什么方法可以从此Docker容器中连接到此MySql或localhost上的任何其他程序吗? 此问题与“如何从Docker容器内部获取Docker主机的IP地址”不同,这是因为Docker主机的IP地址可以是网络中的公共IP或私有IP,这可能是也可能是无法从docker容器中访问(我的意思是公共IP,如果托管在AWS或其他地方)。即使您具有Docker主机的IP地址,也并不意味着您可以从容器内部连接到Docker主机,因为该IP地址可能会覆盖您的Docker网络,主机,网桥,macvlan等,从而限制了Docker的可达性该IP地址。

9
用express.js代理
为避免同域AJAX问题,我希望我的node.js Web服务器转发来自URL的所有请求 /api/BLABLA到另一个服务器,例如other_domain.com:3000/BLABLA,并透明地将与该远程服务器返回的相同的内容返回给用户。 所有其他网址(旁边 /api/*)均应直接提供,不能进行代理。 如何使用node.js + express.js实现此目的?您可以举一个简单的代码示例吗? (Web服务器和远程3000服务器都在我的控制之下,都运行带有express.js的node.js) 到目前为止,我已经找到了这个https://github.com/http-party/node-http-proxy,但是阅读那里的文档并没有使我更加明智。我最终以 var proxy = new httpProxy.RoutingProxy(); app.all("/api/*", function(req, res) { console.log("old request url " + req.url) req.url = '/' + req.url.split('/').slice(2).join('/'); // remove the '/api' part console.log("new request url " + req.url) proxy.proxyRequest(req, res, { host: "other_domain.com", port: 3000 }); }); …

8
Nginx反向代理导致504网关超时
我将Nginx用作接收请求的反向代理,然后执行proxy_pass以从端口8001上运行的上游服务器获取实际的Web应用程序。 如果我访问mywebsite.com或执行wget,则60秒后会收到504网关超时...但是,如果加载mywebsite.com:8001,则应用程序将按预期加载! 因此,有些事情阻止了Nginx与上游服务器进行通信。 这一切都是在我的托管公司重置我的东西正在运行的机器之后开始的,在那之前没有任何问题。 这是我的vhosts服务器块: server { listen 80; server_name mywebsite.com; root /home/user/public_html/mywebsite.com/public; access_log /home/user/public_html/mywebsite.com/log/access.log upstreamlog; error_log /home/user/public_html/mywebsite.com/log/error.log; location / { proxy_pass http://xxx.xxx.xxx.xxx:8001; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 和我的Nginx错误日志的输出: 2014/06/27 13:10:58 [error] 31406#0: *1 upstream timed out (110: Connection timed out) while …

3
与远程服务器进行SSL握手时出错
我在上Apache2监听了443,并在上运行了一个Web应用程序,Tomcat7监听了8443 Ubuntu。 我将apache2设置为反向代理,以便通过端口443而不是8443访问Web应用。此外,我不仅需要在浏览器和apache2之间而且还需要在apache2和tomcat7之间进行SSL通信,因此我在apache2和tomcat7上都设置了SSL 。如果我尝试直接联系tomcat7来访问Web应用程序,一切都很好。问题是,当我尝试通过apache2(反向代理)访问tomcat的Web应用程序时,在浏览器上出现错误: Proxy Error The proxy server could not handle the request GET /web_app. Reason: Error during SSL Handshake with remote server

3
API网关与反向代理
为了处理微服务架构,它通常与反向代理(例如nginx或apache httpd)一起使用,并且出于交叉考虑, 使用API​​网关模式。有时反向代理会完成API网关的工作。 很高兴看到这两种方法之间存在明显的差异。看来API网关使用的潜在好处是调用了多个微服务并汇总了结果。API网关的所有其他职责都可以使用反向代理来实现,例如: 身份验证(可以使用nginx LUA脚本来完成); 运输安全。它本身就是反向代理任务; 负载均衡 .... 因此,基于此有几个问题: 同时使用API​​网关和反向代理是否有意义(例如request-> Api网关->反向代理(nginx)->具体的mictoservice)?在什么情况下? 使用API​​网关可以实现的其他区别还有反向代理不能实现的其他区别,反之亦然?

3
如何直接使用NGINX服务所有现有的静态文件,但将其余的代理到后端服务器。
location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; if (-f $request_filename) { access_log off; expires 30d; break; } if (!-f $request_filename) { proxy_pass http://127.0.0.1:8080; # backend server listening break; } } 上面的代码将直接使用Nginx服务所有现有文件(例如Nginx仅显示PHP源代码),否则将请求转发给Apache。我需要从规则中排除* .php文件,以便将对* .php的请求也传递给Apache并进行处理。 我希望Nginx处理所有静态文件,让Apache处理所有动态文件。 编辑:有白名单方法,但它不是很优雅,请参阅所有这些扩展名,我不希望这样。 location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { access_log off; expires 30d; } location …

3
nginx-从上游服务器读取自定义标头
我将nginx用作反向代理,并尝试从上游服务器(Apache)的响应中读取自定义标头,但未成功。Apache响应如下: HTTP/1.0 200 OK Date: Fri, 14 Sep 2012 20:18:29 GMT Server: Apache/2.2.17 (Ubuntu) X-Powered-By: PHP/5.3.5-1ubuntu7.10 Connection: close Content-Type: application/json; charset=UTF-8 My-custom-header: 1 我想从My-custom-header中读取值,并在if子句中使用它: location / { // ... // get My-custom-header value here // ... } 这可能吗?提前致谢。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.