我努力的事实是,当Nginx的服务1.8 GB的文件,当我把url在Chrome或Firefox的下载与5 Mb / s的,当我用wget或curl,相同的url,相同的客户端PC,下载与(我的最大)25 Mb / s。 使用Apache服务相同的文件,浏览器和curl / wget都会达到25Mb / s。 我的问题是:为什么? 这是一个很漂亮的默认configuration,我把X-Sendfile(apache2)或X-Accel-Redirect(Nginx)放在头文件中,我用nginx试过了几个configuration文件,我可以用limit_rate减慢configuration,但是不能启动。 这是/ etc / nginx / sites-enabled中默认链接的位置部分: location files/ { internal; alias /var/www/html/; #directio 100m; output_buffers 2 512k; limit_rate 30000k; sendfile_max_chunk 0; } 我打开directio,在其他选项左侧或左侧,打开/closuressendfile,没有区别。
当我尝试启动它时: sudo service apache2 restart 我有这个错误 Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details. 我执行: systemctl status apache2.service apache2.service – LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: failed (Result: exit-code) since Thu 2017-09-21 12:00:01 […]
我们有一个独特的代理设置,我们遇到了很多麻烦,试图排除故障。 问题的核心是服务器随机返回500/502/503错误,但我们的代理来自我们不能控制的服务器。 我们至less想知道代理是问题还是我们自己设置的问题。 不幸的是,这些错误都没有被捕获到我们的目的。 我们目前的设置如下: 在RackSpace上运行的LAMP堆栈,在负载平衡器后面有2个服务器,其URL为resource.example.com/thewebsite 然后外部公司使用他们自己的设置进行代理,并通过https://www.example.com/thewebsite的url将stream量传送到域名。 问题是没有提到的500个错误login我们的结尾。 我们的假设是,这是在用户发送到负载均衡器之前发生的,所以我们没有得到日志。 有什么方法可以find或捕获在负载平衡器上的错误吗? 控制代理的外部公司在这个问题上已经完全沉默,我们很难用一个好的方法来帮助解决问题。 谢谢!
目前我有一些zip文件存储在我的PHP / Apache Web服务器的http根。 目前我可以使用这个访问文件: http://example.com/filename.zip 但是,我想“保护”这个文件的访问权限,而且他们只能使用类似这样的方式进行访问: http://example.com/key/filename.zip 有人可以帮我创build一个重写规则来做到这一点? 关键是一个固定的string。 它将在.htaccess规则中进行硬编码。 当用户访问以下URL时: http://example.com/key/filename.zip 他应该能够下载zip文件。 当用户访问以下URL时: http://example.com/filename.zip 他不应该能够下载zip文件。 他应该收到一个http错误。 我的代码到目前为止: RewriteEngine on RewriteRule ^key/(\w+).zip $1.zip
我有一个Web应用程序,看起来像这样: WEB SERVER (PHP, Apache) -> MYSQL NODE 这个工作完全没有任何问题,并已经做了很长一段时间。 但是,当我引入一个负载平衡器(我已经使用HAProxy和ProxySQL,两者具有相同的结果行为)来pipe理对我的数据库集群的请求时,我遇到了Apache拖延的一些问题。 负载均衡器与apache一起安装在Web服务器上,并通过系统的环回设备访问。 明确地说,Web应用程序将数据库调用设置为127.0.0.1:3306 ,这是负载平衡器侦听的地方。 为了简化事情,这是我的新设置: [WEB SERVER (PHP, Apache) -> LOAD BALANCER] -> MYSQL NODE 当负荷变大时,这就是我所看到的: PROMPT~] apachectl status … … WWWWWWWWWWWWWWWWWRWWRRWWWWWWWWWWWWWRWRWWWWWWWWWWRWWWWWRWWWWWWWWR WWWWWWWWWWWWWWWWWWWWWWWWWWRWWRWWWWWWWWRWWWWWWWWWWCWWWWWRWWWWWWWW WWWWWWWWRWWWWRWRWWRRWWWCWWWRWWWWWWWWRWWWWWWWWWWWWWWRWWWRWWWWWWWW WWWWWWWWWWRWRWWCWWWWWWRRWRWWWWRCWWWWWWWWWWWRWWWWWWWRWRWWWW 多个负载平衡器发生这一事实表明,这个问题是更一般的,可能与操作系统有关。 我看不到由Apache,负载均衡器或数据库报告的错误。 操作系统指标,如CPU和内存看起来没问题。 在这个问题出现的时候,我确实看到了下面的情况: TCP套接字的数量 Apache进程的数量 我觉得我可能在这里错过了一些东西,并会感谢任何build议。 谢谢
我在自己的域名上创build了一个networking表单,在我的公司之外。 该表格是为公司的员工制作的。 当员工想要到表格时,他必须login公司网站并点击链接。 以这种方式,员工不需要表格的特殊login,但他可以使用标准的公司login。 在webform服务器的.htaccess中,我检查HTTP_REFER。 当引用是正确的访问被授予,并设置cookie。 当员工再次访问表单时,他可以直接进入,因为他有一个cookie。 <If "%{HTTP_REFERER} == 'https://sites.google.com/a/company/form'"> Header append Set-Cookie "verified_user=yes;path=/;Secure;HttpOnly;Expires=Wed, Jan 01 2020 2:02:02 GMT" </If> <Elseif "%{HTTP_COOKIE} != 'verified_user=yes'"> Redirect https://sites.google.com/a/company/form </Elseif> 这有多安全?
我试图使用Apache2的mod_expires来caching发送到客户端的图像。 我注意到,服务器仍然发送200响应。 经过进一步的调查,我发现我的服务器正在发送以下Expires头文件: Expires:Thu, 19 Nov 1981 08:52:00 GMT 我的apache2.conf有以下内容: <IfModule mod_expires.c> ExpiresActive on ExpiresByType image/ico "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" </IfModule> 并且mod_expires被启用。 我如何告诉我的服务器,它不是1981年10月19日?
这是我在服务器故障中的第一个问题,我为我可怕的英语感到抱歉。 我的squid盒在tproxy模式(ipv4 / ipv6)下工作很完美,使用关于Tproxy的wiki squid-cache的指南,比我已经安装了apache和使用链接http://server_ip/index.html不工作,显然是因为规则: iptables -t mangle -A PREROUTING -p tcp –dport 80 -j TPROXY –tproxy-mark 0x1/0x1 –on-port 3129 它将所有端口80的stream量redirect到我的tproxy端口。 所以我改变了Apache的端口为8080,现在input上面的地址加上:8080完美的作品,但如果我想使用的地址没有端口在链接的最后,我已经尝试了关于维基squid-cache指南反向代理,使用cache_peer指令,因为tproxy的规则没有成功,所以我希望有人能够帮助和理解我想做的事情,非常感谢我得到的任何答案。
在某些情况下,我使用nginx作为负载平衡器。 这是… 我有两个Apache的虚拟主机,它们是两个不同的networking应用程序, vhost.com和vhost.org ,它们在相同的端口8888上进行监听。 我在nginx上创build了这些虚拟主机,监听端口80的stream量正在被转发到Apache。 这是一个vhost.com的例子。 upstream local { server vhost.com:8888; } server { listen ***.***.***.***:80; server_name vhost.com www.vhost.com; if ($host = "vhost.com") { return 301 http://www.$host$request_uri; } location / { proxy_pass http://local$request_uri; } error_log /var/www/nginx_logs/vhost.com.error.log; access_log /var/www/nginx_logs/vhost.com.access.log; } 问题是,当我请求vhost.com它从vhost.org主机返回内容。 我在哪里犯错了?
我在已经有apache2的服务器(ubuntu 16.04)上安装了nginx,并且完成了以下configuration, – >更改apache端口80到8888,所以nginx会听80 – >依次重启apache和nginx。 仍然得到Apache的默认页面时,我inputhttp:// localhost我也停止了apache2服务,并重新启动nginx服务,以确保只有一次服务器运行时,但仍然得到本地的请求上的Apache默认页面! 这实际上应该是nginx默认页面cuase apache服务不再运行了。 有一件事我发现可疑的是'htcacheclean'进程正在运行,是否负责返回Apache页面? 这是怎么发生的,对我来说很奇怪! 如果你遇到过这样的问题,请分享一下。 ss -tlnp返回以下端口80 状态Recv-Q发送Q本地地址:端口对端地址:端口 听0 0 *:80 **:* * ss -tlnp | grep nginx命令输出显示nginx