Articles of 反向代理

Nginx反向代理与iRedMail Apache2

在一个空的VPS主机上,我设法使用Apache2和LDAP运行基本的iRedMail安装,我的roundcubemail可以在以下地址访问: https://www.mydomain.com/mail 然后我安装了NginX,closures了Apache2,重新configuration了iRedMail(在DNS条目中没有添加任何额外的Alogging),并设法在Nginx基础安装上运行它,以及可以在以下地址访问的roundcubemail: https://mail.mydomain.com 现在,我想运行带有roundcubemail的基础iRedMail Apache2安装的Nginx反向代理,请访问: https://mail.mydomain.com 我有点卡住下面的Apache2configuration文件: /etc/apache2/ports.conf 听8080 /etc/apahce2/sites-available/my-iredmail.conf <VirtualHost *:8080> DocumentRoot / var / www / ServerName mail.mydomain.com 别名/“/ usr / share / apache2 / roundcubemail /” <Directory "/usr/share/apache2/roundcubemail"> 选项索引FollowSymlinks MultiViews AllowOverride全部 订单允许,否认 全部允许 </Directory> </VirtualHost> 并遵循NginXconfiguration文件: /etc/nginx/sites-available/default 服务器{ 听80 default_server; 听[::]:80; root /usr/share/nginx/html; index index.html index.htm index.php; server_name mydomain.com www.mydomain.com mail.mydomain.com; […]

Nginxredirect而不是代理传递

我在我的实验室里把Apache改成了Nginx,我们在子域下有很多projets,所以我用一种方法,每个子目录的服务器都运行在一个高端口(8000或者更高),而主服务器在80代理他们。 我的80服务器是这样configuration的: include /etc/nginx/sites-enabled/*.conf; upstream php { server unix:/run/php-fpm.sock; } server { server_name example.com; listen 80; location / { proxy_pass http://127.0.0.1:8000; } location /application { proxy_pass http://127.0.0.1:8001; } location /phpmyadmin { proxy_pass http://127.0.0.1:8002; } } 所以我有另外三个服务监听不同的端口,如下所示: server { listen 8000; root /var/www/path/to/application; index index.php; location / { try_files $uri $uri/ /index.php?$args =404; } location ~ […]

反向代理模式下的Squid:需要重写主机头

我试图在服务器上部署鱿鱼,我可以指向一些域名,并从我的主域www.example.com,这是我的私人networking加载内容。 基本上我需要一种方法来重写从客户端发送到www.example.com的主机头,否则后端服务器将不会响应未知的虚拟主机(不能改变这一点)。 有没有办法做到这一点? 已经尝试指定defaultsite,但只有在客户端没有发送主机头时才起作用。 也试过 header_replace Host www.example.com 没有效果。 TIA

子目录上的IIS反向代理破坏根目录

我正在IIS 7.5上运行一个HTML,单页面的应用程序。 我想在一个子目录中设置一个反向代理,这样我可以对我的API进行同域请求。 所以我希望我的网站的行为是这样的 + site/ | – index.html | – app.js | + api/ (reverse proxy to api server) 不幸的是,我错过了一些东西。 虽然我的反向代理重写规则似乎工作,我对index.html的要求不是。 对于超出api / rewrite规则的任何内容,我都会得到500个内部服务器错误。 这是我的web.config: <rewrite> <outboundRules> <rule name="ReverseProxyOutboundRule1" preCondition="" enabled="true"> <match filterByTags="A, Form, Img" pattern="^http(s)?://webserver/api/(.*)" /> <action type="Rewrite" value="http{R:1}://apiserver/{R:2}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> <rules> <rule […]

通过Apache进行代理时,HTTP CONNECT请求体减less到/

我正在使用Apache 2.2.15作为在Scientific Linux 6上运行的反向代理。它被用于将应用程序连接到远程服务器,在远程服务器上连接的应用程序要求CONNECT请求完整地通过身体。 代理正确接收连接: CONNECT <destinationhost>:6220 HTTP/1.1 但目标服务器收到这个: [17/Jun/2014:15:01:13 +0200] "CONNECT / HTTP/1.1" 400 346 "-" "-" 那么代理内部的CONNECT体是“剥离”的? 所有其他的请求方法工作得很好,只有在使用CONNECT时才会出现问题。 这与TLS和无。 所有的标题似乎正确地通过。 我的代理configuration如下: <VirtualHost *:80> <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://destinationhost:8082/ ProxyPassReverse / http://destinationhost:8082/ </VirtualHost> 我已经尝试了指令“AllowCONNECT 6220”,并使用RewriteRules进行代理,但它们似乎没有什么区别。 结果与简单的telnettesting一样,并且在我的本地Ubuntu机器上使用Apache作为代理。 那么对于CONNECT这种正常行为,问题实际上是应用程序在目的地运行,期待一个“畸形”的CONNECT请求? 如果不是,可能是什么问题?

很多用户,反向代理和两者的问题

我有一个独特的情况,正在pipe理我的vpns有点痛苦,所以我想让我和我的用户更容易,希望没有人能给我一些想法和/或替代品。 现在的情况是,我有大约600个客户端连接到我的networking上的大约6台服务器,用于mysql数据库复制。 MySQL从站连接到主站,因此连接从我的networking到客户端networking,我们以前没有使用VPN,但是这远不是安全的,所以我们一直在将每个人都转移到VPN。 现在他们直接与openvpn分配的服务器连接。 事情是,大多数用户不是技术性的,所以我的团队必须连接到他们(teamviewer和similars)并为他们做设置,有时我们必须将这些人从一台服务器移到另一台服务器。 现在的方式是,我的小团队中的某个人连接到客户端服务器,并更改服务器上的设置,有时他们的防火墙也是如此,这对于一个3人pipe理600的团队来说,花费了太多的时间。 现在:客户端— VPN / MYSQL服务器 所以我想让自己的生活变得更加简单,我将6台服务器安装在一个专用networking中,另外一台虚拟机就是网关。 在那个虚拟机中,我运行openvpn 3个实例,所以每个实例大概有200个客户端。 请注意,在我们的情况下,MySQL复制不会占用大量的带宽,每个用户大约40KBps,导致ADSL上传速度(大多数客户端使用adsl)是严重的。 现在,我正在阅读互联网,大多数人都说这是不可能的,所以我认为这将是复查的地方。 我可以让每个客户端连接到他们的vpn实例,但我想使它更容易和使用像反向代理,所以我只有一个外部地址和端口连接,并根据他们连接到哪个地址redirect到正确的在openvpn服务器上的端口。 意图:客户—防火墙— NGINX —-正确的端口在VPN服务器上 这可能吗? 如果不是用nginx与别的东西? 如果不可能,你会在这种情况下做什么? 我渴望在这里的一些想法:) 到目前为止,我尝试设置nginxredirect到vpn服务器作为fastcgi网关,没有运气,ovpn获取到nginx但没有redirect任何东西。 如果我用浏览器尝试,我得到一个错误的网关错误,只有他们的ovpn服务器在日志上显示一些生命迹象。 vpn服务器实例如下(其中3个,不同的端口和ip池)。 port 4001 proto tcp dev tun ca vpnkeys/keys-vpn1/ca.crt cert vpnkeys/keys-vpn1/vpn1.crt key vpnkeys/keys-vpn1/vpn1.key # This file should be kept secret dh vpnkeys/keys-vpn1/dh1024.pem server 172.16.101.0 255.255.255.0 ifconfig-pool-persist ipp-vpn1.txt keepalive 10 120 […]

上游超时(110:连接超时)连接到上游

我在法国有我的后台,我的一个前端服务器在日本。 这个问题不会发生在我的任何其他前端,只有这个日本服务器,从大多数地方已经有大约2秒的延迟。 延迟不是什么困扰我,它是在前端发生的超时错误。 我确定这不是一个后端问题,因为这只发生在日本服务器,并发生在获取图像等静态资源时,所以这不是我使用的php-fpm的问题。 我也有时会得到这些错误: upstream prematurely closed connection while reading response header from upstream 这也不是内存或CPU问题。 前端的nginx使用4个工作进程, proxy_read_timeout设置为150,即使改变它也没有什么区别。 有没有什么事情可以帮我解决这些错误?

如果设置了特定的头部,则打开/closuresnginx中的代理服务器

为了testing的目的(特别是我正在开发一个性能分析器的网站,目前在生产中运行)我需要有一些端点(ES:/性能)应该由Nginx处理(他们获取像时间点等数据和保存到文件)。 但是,显然,网站可能有一个与我的端点名称相匹配的文件夹/路由path。 所以,我希望能够将端点/性能作为一个标准的反向代理,除非设置了一个自定义的HTTP头[甚至是一个特定的GET值]。 如何在nginx中打开/closuresproxy_pass,指定的位置? 我知道我不能在Perl的configuration文件中使用if,for等。 有另一种方法吗?

如果后端不可用,nginx代理将不会重试

我有一个位于nginx反向代理后面的应用程序。 没有什么幻想,只是一个简单的 server { listen 54321; proxy_connect_timeout 5000ms; proxy_read_timeout 5000ms; location / { proxy_pass http://localhost:54322/; } } nginx首先启动。 如果我在尝试打开应用程序的时候遇到了502错误的网关。 这是预期的,但如果我启动应用程序,我仍然得到一个502.它只是在我重新启动nginx请求最终通过。 我如何指示nginx继续尝试(至less周期性地)连接到后端?

还有另一个与NginX的502错误

我试图把一个服务器@家到位与一些基本的服务。 所有服务都运行在专用的虚拟机上。 每个虚拟机托pipe在vSphere 5.5上。 到目前为止我有: 用nginx作为反向代理的Debian喘气:192.168.1.12 使用nodeJS作为webapp服务器的Debian喘息:192.168.1.43 192.168.1.43:3000 =>在192.168.1.43:3001上进行redirect的http web服务器 192.168.1.43:3001 => https服务器提供的服务 Debian喘气madsonic安装:192.168.1.35 正如在文档中所说,我把–https-port = 443在configuration中启用https访问 我使用nginx能够有这样的事情: myapp.mydomaine.com =>转到nodejs @ 192.168.1.43 music.mydomain.com =>去madsonic @ 192.168.1.35 我遵循一个教程,并在/ etc / nginx / sites-enabled中编辑了“默认”文件。 以下是它的样子: server { listen 80; server_name myapp.domaine.com; location / { proxy_pass http://192.168.1.43:3000; } } server { listen 443; server_name myapp.domain.com; ssl on; ssl_certificate […]