Articles of nginx

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

我有一个独特的情况,正在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,即使改变它也没有什么区别。 有没有什么事情可以帮我解决这些错误?

显示传递给fastcgi的nginx日志和参数中的真实服务器名称?

我用server_name中的正则expression式configuration了我的nginx虚拟主机。 nginx显示日志中的原始正则expression式和传递给php-fpm的参数(我知道$_SERVER['HTTP_HOST']具有实际值,这不是问题)。 我的问题是我怎么能让nginx把真正的主机名,而不是正则expression式。 server_name指令看起来像这样: server_name ~^(:?(?<second>.+)\.)?(?<domain>[^.]+\.[^.]+)$;

对于apache2.2 svn服务器的nginx SSL终止导致无尽的redirect

我试图在我们新的公司服务器上build立一个SVN仓库。 我们使用nginx的SSL终止和Apache作为SVN的后端。 我不知道什么是我的configuration错误,但如果我打电话给svn info https://svn.example.com/repo我得到: Redirecting to URL 'https://svn.example.com/repo': Redirecting to URL 'https://svn.example.com/repo': svn: E195019: Redirect cycle detected for URL 'https://svn.example.com/repo' 如果我使用wireshark从nginx前端嗅探未encryption的stream量到我们的apache后端,我可以看到“/ repo”的“Options”请求,然后是301 Moved Permanentlyredirect到http://svn.example.com/repo/ 。 但svn客户端显然只看到一个redirect到https://svn.example.com/repo (尾随斜线由nginx剥离),它只是为了得到这个redirect 我想我的错误是一些简单的configuration指令,我忘了设置或类似的东西,但经过超过3个小时的search,没有find任何有用的东西,我感到有点无奈。 我的nginxconfiguration: server { ssl on; ssl_certificate ssl/svn.example.com.crt; ssl_certificate_key ssl/svn.example.com.key; listen 1.2.3.4:443 ssl spdy; allow all; server_name svn.example.com; location / { set $fixed_destination $http_destination; if ( $http_destination […]

Nginx的glob在try_files中

是否有可能在nginx做一些相当于try_files文件pathglob的东西? server { try_files /var/www/*/assets/$uri; } 也就是说,如果/var/www/包含site_a和site_b ,它们都包含一个assets目录,这将执行相当于 server { try_files /var/www/site_a/assets/$uri /var/www/site_b/assets/$uri; } 我试图看看这是否可能,而不必参考目前驻留在/var/www的目录。 欢迎任何build议。

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

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

Nginx负载均衡器和Tomcat启动延迟

我使用nginx(centos上的免费版本)作为反向代理负载均衡器到Tomcat 7服务器集群。 除了tomcat启动的时候,它工作的很好。 如果一个Tomcat实例closures,它会正确地故障转移到另一个。 但是,如果Tomcat启动 – 这可能需要60秒 – 它将请求发送到tomcat,但tomcat不响应。 所以用户得到nginx错误页面。 有没有办法让上游负载平衡器确保tomcat正在响应? 谢谢

如果后端不可用,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周期性地)连接到后端?

PHP的NginX – 输出缓冲 – videostream

(因为它包含一些编码,但也是关于nginxconfiguration,我认为这将是最好的在serverfault)。 我有我的服务器中的一些video文件存储在我的文件系统内的文件夹中,我正在使用PHP来读取video文件,并直接发送给使用NginX作为WebServer的用户。 大部分video文件都是使用FFmpeg生成的实时stream ,但我也有一些电影 。 实况stream文件 :有分裂成段和PHP我读了m3u8文件,我得到* .ts文件,而我正在使用PHPstream媒体,而FFmpeg仍然在后台运行。 电影文件 :只有一个静态文件 我有一些关于nginx / phpconfiguration的问题。 我的NginXconfiguration如下: server { listen 80; index index.php index.html index.htm; root /var/www; server_tokens off; chunked_transfer_encoding off; location ~ \.php$ { try_files $uri =404; fastcgi_index index.php; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } } 对于每一个从我的服务器上读取video文件的客户端,我login连接,我可以预测他是否仍然在线或没有使用 PHP中的connection_aborted()函数(简单来说,如果php脚本仍在运行) 现在的问题: Nginx默认fastcgi_buffering; 当我向客户提供电影时,这就给我造成了一个问题。 当我想要为Live […]

tomcat7 + nginx ssl会导致redirect循环

我们有以下设置:几个子域导致相同的服务器,它运行nginx作为它们中的每一个的代理。 所有子域目前都用于testing开发中的function,所以它们的内容或多或less是相同的。 这或多或less是每个nginx站点configuration文件的样子 server { listen 80; server_name full.web.address; location / { proxy_pass http://devhost:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_cache global; proxy_cache_valid 200 302 600m; proxy_cache_valid 404 1m; } location /robots.txt { alias /var/www/default/robots.txt; } } server { listen 443; server_name full.web.address; location / { proxy_pass http://devhost:8080/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header […]