Articles of http

NGINX在使用上行时没有响应

我试图通过nginx来平衡一个web应用程序,它可以正常工作,我的web应用程序会调用带有子path的服务。 例如它的工作 http://example.com/luna/ 但不是 http://example.com/luna/sales 我的nginx.conf user nobody; worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream lunaups { server myhostserver1.com:8080; server myhostserver2.com:8080; } server { listen 80; server_name example.com; proxy_pass_header Server; location = / { rewrite […]

服务静态文件时,Nginx使用错误的path

我正在尝试使用nginx + php-fpm来为我的覆盆子pi上的Owncloud服务。 我正在使用自定义安装path/mnt/usbstorage/Documents/owncloud ,并且想要使用URL http://myserver/owncloud/访问http://myserver/owncloud/ 。 我已经configuration了位置,我可以访问index.php 。 但是,CSS和JS文件没有被加载。 nginxconfiguration如下(我已经忽略了一些部分,以保持最小): upstream php-handler { server unix:/var/run/php5-fpm.sock; } server { listen 80; server_name _; location ^~ /owncloud { alias /mnt/usbstorage/Documents; client_max_body_size 10G; fastcgi_buffers 64 4K; gzip off; index /owncloud/index.php; error_page 403 /owncloud/core/templates/403.php; error_page 404 /owncloud/core/templates/404.php; location /owncloud { rewrite ^ /owncloud/index.php$uri; } location ~ ^/owncloud/(?:index|remote|public|cron|core|ajax|update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) { […]

尝试将HTTPredirect到nginx中的HTTPS作为jenkins的反向代理时,从服务器返回空回复

我正在Jenkins后面运行Jenkins,并使用Let's Encrypt来获得SSL证书。 如果我通过https://jenkins.mydomain.de/访问该网站,一切工作正常。 但是,当我通过http://jenkins.mydomain.de/访问它,Firefox说:“连接被重置。”和curl说:“从服务器的空回复” 我如何debugging? 我真的不知道该在哪里寻找问题。 nginx日志不包含任何关于它的事情。 我怀疑在下面的configuration中关于端口80的部分是由其他指令无效,但我不知道我将如何调查。 $ curl -svL http://jenkins.mydomain.de/ * Hostname was NOT found in DNS cache * Trying my.ip.add.ress… * Connected to jenkins.mydomain.de (my.ip.add.ress) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.38.0 > Host: jenkins.mydomain.de > Accept: */* > * Empty reply from server * Connection #0 to host […]

HTTP / 1.1 301从IIS永久移动两分钟

两分钟的IIS从www.exaple.comredirect到www.example.com 。 没人修理它 – 这是一个暂时的错误。 有一个网站重写2.0安装有一个规则是多年没有改变,一切都很好,直到上周一。 两分钟后有一个redirect循环,网站被closures了。 HTTP/1.1 301 Moved Permanently Content-Type : text/html; charset=UTF-8 Location : http://www.exaple.com/ Server : Microsoft-IIS/8.5 X-UA-Compatible : IE=edge,chrome=1 Date : Sun, 25 Sep 2016 23:15:11 GMT Content-Length : 142 事件日志是清楚的 – 没有.NET,APS,系统。 你以前遇到过这样的事情吗? 可能是什么原因?

在ARR之前IIS重写位置标题

我们有一个重写configuration,将ARR作为一个反向代理,像这样的configuration: Browser client (OriginA) <-> IIS/ARR (OriginB) <-> Server 客户端是任何数量的Web浏览器。 我们不能改变这个configuration。 客户端请求http:// originb / return ,请求中包含http://origina/done.html之类的URL。 然后ARR将请求转发到http:// server / return 。 服务器响应的Location标题设置为http://origina/done.html和HTTP 302.我已经用Wiresharkvalidation了这一点。 pipe道中某处的IIS将Location标题更改为http://originb/done.html 。 这是问题出现的地方。 ARR在Location标题的PATTERN_MATCH步骤中查看originb URL。 ARR在“GENERAL_RESPONSE_HEADERS”步骤中将originb URL报告为“ Location标题。 客户端盲目接受URL并redirect到不存在的http://originb/done.html而不是http://origina/done.html 我已经启动了失败的请求追踪,那就是我如何看到步骤5和6。 什么可能导致IIS在ARR之前重写Location头? 有没有其他的IIS工具可以用来解决这个问题?

下载被截断(TCP连接终止)原因不明

在PHP中,我基本上有以下几点: set_time_limit(0); foreach ($files_to_send as $file) { $filesize = filesize($file); $blocksize = 1024 * 1024; // 1MB $outputted = 0; // how many bytes already sent $fid = fopen($file, 'r'); while ($outputted < $filesize) { echo fread($fid, $blocksize); $outputted += $blocksize; } } 这很好。 这是一个非常慢的服务器(英特尔凌动双核CPU),但从本地运行wget约20-24MB /秒。 从外部下载基本上填充服务器的上传速度或客户端的下载速度,以较慢者为准。 如预期的那样,500MB的下载需要大约8分钟的10mbps连接。 来自美国的人(服务器在荷兰阿姆斯特丹附近)提到,对他来说下载大约半分钟后就下载了。 他的下载速度大约是100-200KB / s,并且先不下滑。 我正在尝试诊断问题。 我已经检查了Apache的内存使用情况,并且非常稳定,这意味着PHP的输出( echo […]

在微小的请求减lessgunicorn CPU使用率

我正在用Python编写一个事件聚集服务器,使用Nginx + Gunicorn。 系统在1 cpu / 2核心盒(AWS c4.large)上的CPU最大值之前可以扩展到大约300 rps。 增加一个枪炮工或者使用小工,只能在利润率上(约10%)。 响应在1-2ms范围内(事件正被写入磁盘)。 从我的分析看来,gunicorn似乎花费了所有的时间和精力读取socket(在select()调用中是sync.py)。 与此同时,Nginx占据了CPU本身的2-3%左右。 使用UNIX套接字不会更改networking套接字上的性能configuration文件。 由于这些事件非常小(大约200字节),看起来它需要花费过多的努力才能将请求从套接字中取出。 我希望能够批量这些请求有效载荷之前,他们到达gunicorn,但我不知道如何做到这一点。 有什么办法可以减lessgunicorn正在采取的努力/ CPU的数量,并提高每箱的吞吐量?

集群大小,缓冲区大小和数据包大小如何与性能相关?

我正在embedded式系统上创build一个服务器。 我有一个SD卡上的FAT文件系统,其中包含一个文件,该文件应该通过HTTP连接到系统的WiFi发送到某个客户端 。 起初,我试图逐字节读取文件,这是非常缓慢的。 为了改善文件阅读,我介绍了一个缓冲区。 我从文件读取到缓冲区,然后将缓冲区内容写入发送到客户端的stream: file -> buffer -> network 增加缓冲区大小会增加数据传输速率。 我认为这是因为对文件系统的读操作数量减less了。 但是,任意大的缓冲区(比如说5000字节)会适得其反。 我怀疑这是由于bufferbloat。 服务器花费太多的时间填充缓冲区,这使networking混乱。 显然,有一些最佳的缓冲区大小,读取速度增加,而不会由于缓冲区膨胀而导致放缓。 我想提高数据传输率方面的总体performance。 目前我得到3Mbi / s太慢了。 我在控制缓冲区大小和集群大小。 我可以通过为这两个值做出正确的select来改善系统的性能吗? 缓冲区大小和簇大小是否理想相同? 一般来说,缓冲区大小应该是簇大小的整数倍(可能> 1)? 我是否应该以某种方式select这两者,以便与networking有效负载大小保持一致? (我对networking没有多less经验,也不知道是否有固定的有效载荷大小这样的事情) 如何决定这些尺寸以提高数据传输率?

nginx / memcached用于caching的Web代理

我试图将nginx设置为HTTP代理上的caching层 – 以及memcached来做实际的caching。 这里的目标是我们有一个内部应用程序,它会频繁地发出 HTTP请求,我们希望使用nginx + memcached作为Web代理来加速对这些传出客户端请求的响应。 (特别是因为许多请求可能是多余的)。 有很多关于设置nginx和memcached的很好的文档和信息,但是我遇到了一个问题,因为看起来我的特殊用例并不常见。 大多数教程,例子等假定读者正在运行一个网站 ,并且想要使用nginx + memcached来提高网站的性能。 但是我的用例是不同的。 我只想使用nginx作为Webcaching代理,并使用memcached作为caching的实际存储层。 同样,我对加速网站传入请求的性能不感兴趣 – 我对加快来自内部应用程序的传出 HTTP请求感兴趣。 所以,虽然似乎有很多在线的教程解释了如何将nginx设置为Webcaching代理 ,以及许多在线教程解释了如何将nginx + memcached设置为高性能cachingWeb服务器,但是,似乎很多解释如何将nginx设置为使用memcached执行实际caching的Webcaching代理。 好的,所以我试图在两条线之间读一遍,然后自己弄明白。 我有nginx和memcached都安装在开发盒本地。 我也使用“ 增强的Nginx Memcached模块 ”,而不是nginx自带的nginx + memcached模块,因为很明显,开箱即用的版本不会cachingHTTP头 (这看起来似乎使其在实践中无法使用,除非我在这里错过了一些东西)。 所以我的nginx.conf文件的相关部分是: upstream some-upstream-proxy { server proxy.giant-corporation.com:82; } upstream memcached_upstream { server 127.0.0.1:11211; keepalive 20; } server { listen 80 default_server; server_name my-cache-proxy; location […]

Apache 2.4.23:HTTP 503的gzip

可以指示Apache来gzip HTTP 503响应的内容吗? 我pipe理的网站页面需要暂时删除。 HTTP 503不仅恰当地描述了情况,而且还保留了search引擎的排名。 响应的正文包含HTML标记,以便页面被标记为像网站的其他部分。 由于gzip没有触发,我看到这个页面的传输时间显着增加。 所有其他页面都压缩得很好。 提前致谢!