我的FastCGI(PHP-FPM)应用程序可能会遇到需要一些时间来自我修复的情况。 我想告诉nginx它应该等待几秒钟,然后重新发送请求到FastCGI后端。 我已经尝试了一个hacky安装,其中nginxconfiguration了fastcgi_next_upstream http_503 ( 请参阅文档 ),其中fastcgiconfiguration与上游相同: upstream php { server 127.0.0.1:9000; server 127.0.0.1:9000; } location ~ \.php(/|$) { fastcgi_pass php; fastcgi_next_upstream http_503 } 当PHP应用程序需要一些时间和空间的时候,它会回复503 ,使得nginx“向前移动”到显然是同一个服务器的下一个上游。 不幸的是,nginx以毫秒为单位进行第二次调用。 我想延迟nginx的第二个电话几秒钟,以确保PHP后端完全正常运行后,错误的情况。 那么,如何在第二次尝试之前添加适当的延迟? 在幕后,我需要回收整个PHP-FPM过程,因为MongoDB驱动程序如何处理副本集故障转移。 这就是为什么我无法在PHP级别完全处理这个案例,但是需要短时间释放PHP过程。
*2037 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 server_name .site.com; root /var/www/site; error_page 404 /404.php; access_log /var/log/nginx/site.access.log; index index.html index.php; if ($http_host != "www.site.com") { rewrite ^ […]
OS:Centos PHP:5.5.6 Nginx:1.4.4 Nginx conf server { listen 80; server_name example.ltd; root /srv/example.ltd/www; index index.php; access_log /srv/example.ltd/logs/nginx-main.log main; error_log /srv/example.ltd/logs/nginx-error.log warn; autoindex on; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/srv/example.ltd/tmp/example.ltd.sock; fastcgi_index index.php; fastcgi_param SCRIPT_NAME /www$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SERVER_NAME $host; fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; include fastcgi_params; } } […]
我有一个关于查看单个post的重写规则的博客。 查看由名为view.php的文件处理。 我在我的vhostconfiguration中使用了一些重写规则,如下所示: location /view { rewrite ^/view/([^/.]+)?/?(.*) /view1.php?pid=$1&$query_string; } 这使得URL如下所示: http://domain.com/view/xxxx 其中xxxx是postID。 在同一页面上,我有一个社交分享插件,其中包含一个名为share.php的文件,位于与view.php文件相同的目录中。 该插件工作正常,但是我在我的日志中收到以下错误: FastCGI sent in stderr: "Unable to open primary script: /var/www/domain.com/view/xxxx/share.php (No such file or directory)" 我猜测它与我的nginxconfiguration文件中的上述重写规则有关。 我该如何解决这个问题? 我应该在vhostconfiguration文件中为share.php文件添加特定的重写规则吗? 这是我的PHP conf: location ~ \.php$ { root /var/www/domain.com; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_ignore_client_abort on; fastcgi_param SCRIPT_FILENAME […]
我需要使用php-fpmconfigurationdynamic设置PHP会话cookie域,伪代码如下所示: <If "%{HTTP_HOST} !~ /[0-9]/"> php_value[session.cookie_domain] = ".mysite.com" </If> <If>指令在Apacheconfiguration中工作。 但是,我需要这个在www.conf ,它看起来像一个php.ini文件。 怎么做?
有一个挑战,发现为什么结果是如此。 也许错过了一些明显的 对不起,这不是很具体。 但如果任何人有一个领域的重点,这将是非常有益的。 干杯。 负载testing 其大约5486分钟写入分钟/每秒90。 当服务器变得不堪重负时,我可以在日志中看到以下错误: 11:资源暂时不可用),同时连接到上游 在从上游读取响应报头时,上游超时(110:连接超时) 问题 运行负载testing时,请参阅以下问题: 执行更新/写入(负载testing正在进行的那个)的页面变慢,需要10 20秒来加载。 Nginx在任何页面上给出任意的404。 结果显示,在高峰期可能有10-20%的请求导致404。 我认为他们是两个不同的问题,可能无关。 在图表中我看不到任何平坦的线条,这意味着达到了极限。 Web服务器占用60%的CPU并保持稳定。 RAM看起来不错。 数据库服务器大约占CPU的20%,并保持稳定。 RAM看起来不错。 数据库连接转到1500/2000。 这看起来如果。 虽然它不是平线,这表明它没有达到极限。 networking连接限制似乎是确定的。 索引表在可能/适当的情况下。 基础设施 AWS RDS MySQL 1 x db.m3.xlarge写入操作1 x db.m3.xlarge用于读取操作的复制数据块 AWS EC2 Web服务器Linux,Nginx,PHP-FPM 6 x c3.2xlarge configuration /etc/php-fpm.d/domain.com.conf [domain.com] user = nginx group = nginx ;;;The address on which […]
我有3个服务器都设置相同的负载平衡与Apache,mod_proxy_fcgi,php5-fpm和MySQL / mariaDB galera群集运行在Ubuntu 14.04服务器上的单个网站。 除了一页以外,一切接缝都可以正常工作。 页面im有上传和处理大csv文件(7K到20K行)的问题,然后将数据插入数据库。 当网站在一台服务器上运行时,这个页面工作正常,但是附加的时间galera集群需要同步其他两个服务器接口,这是问题的根本原因,因为它是一个同步更新,获得并保持locking直到所有3服务器被更新。 这是不明显的任何其他页面,但在这个脚本504返回错误,并且Apache错误日志包含以下错误。 [proxy_fcgi:error] [pid 24235] [client 99.99.99.99:44197] AH01068: Got bogus version 1,referer: http://example.com/page.php [proxy_fcgi:error] [pid 24235] (22)Invalid argument: [client 99.99.99.99:44197] AH01075: Error dispatching request to :, referer: http://example.com/page.php 99.99.99.99的IP地址是服务器的实际IP地址,而不是客户端,所以看起来php-fpm没有及时响应proxy_fcgi(因为它正在等待mysql),并返回超时。 我试图调整超时在我的apache站点configuration以及php-fpm超时没有运气。 我的apacheconfiguration如下 <Proxy fcgi://127.0.0.1:9000> ProxySet timeout=1800 </Proxy> ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/$1 也试过了 ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/$1 connectiontimeout=300 timeout=300 我不想在后台处理上传,因为如果我正在处理页面,如果在csv文件中发现错误,我正在使用mysql行pk,以允许用户编辑信息并更正问题。 我的用户更舒服的等待这个页面,然后他们回来检查它的进度。
下面列出了我们正在考虑的3个选项。 哪一个最好,还是有更好的解决办法,我们没有考虑。 所有的服务器都是nginx的linux。 你有没有看到任何一个特别错误? 额外的澄清。 nginx的php-fpm服务器将有开放的端口到SQL服务器和文件共享,因此中间防火墙。 此外,可能需要对video进行转码,以便反向代理服务器将负载均衡nginx php-fpm服务器的实例。 1)互联网 – >防火墙 – >在DMZ中的nginx反向代理 – > firewall – > nginx php-fpm – > files&sql server 2)互联网 – >防火墙 – >在DMZ中的nginx php-fpm – > firewall – > files&sql server 3)互联网 – >防火墙 – >在DMZ中的nginx反向代理 – > firewall – > nginx php-fpm – > vm firewall – > […]
我在CentOS 6.6 x64上使用了PHP-FPM for PHP 5.6.5的Nginx 1.5.12.1。 当我访问任何页面,我得到一个404错误: 文件未find。 我的PHP-FPM错误日志没有说任何有用的东西,但是我的Nginx错误日志: 2015/04/02 10:25:44 [error] 24689#0:* 35 FastCGI在stderr中发送:读取来自上游的响应头时,“主脚本未知”,客户端:172.31.42.64,server:_,request:“GET /_index.php HTTP / 1.1“,上游:”fastcgi://127.0.0.1:9000“,主机:”www.dev.example.com“ 此时,您可能认为SCRIPT_FILENAMEconfiguration不正确。 这不是,或者至less对我来说是正确的。 如果我启动一个数据包嗅探器,并深入到Nginx和PHP-FPM之间的连接,我可以看到variables设置正确: SCRIPT_FILENAME是/opt/example/_index.php SCRIPT_NAME是/_index.php DOCUMENT_ROOT是/opt/example REQUEST_URI是/_index.php DOCUMENT_URI是/_index.php 该脚本确实位于/opt/example/_index.php ,文档根目录是/opt/example 。 你看到这些variables有什么问题,传递给PHP-FPM? 假设它们是正确的,我猜测PHP-FPM不能访问这些文件。 我把一切都设置为777 ,包括整个example目录。 这并没有解决问题。 PHP-FPM将返回“主脚本未知”的其他原因是什么? 我怎样才能进一步debugging情况? PHP-FPM需要做其他的许可吗? 编辑:我发现,如果我以root身份运行PHP-FPM,我的问题已解决,所以这将是某种权限问题,但我不知道什么,因为他们所在的脚本和目录是开放的。
我是一名PHP开发人员,我一直在开发LAMP环境,现在一切都很顺利。 目前,我正在开发一个PHP Web应用程序,仍然在Apache上,没有使用任何框架。 PHP-fpm将在前端提供dynamic和静态内容,而php-cli脚本将通过一些cron-jobs(实际应用程序)在后端运行。 这一次,我正面临着并发问题,因为这个网站将被多个用户使用。 并发login用户的估计数量为50-75,至less在启动期间。 我几乎在任何地方都看过Nginx比Apache更好, 我已经阅读了很多解释它们之间差异的文章,我已经阅读了性能统计数据,但是我没有find实际的(并发用户)阈值,您应该从Apache切换到Nginx。 我只是想知道这一点,正如我上面所说的,我一直在使用Apache,Web服务器的改变是一个重要的select,特别是关于我将不得不花费在Nginx文档上以便完全理解它的行为/function。 事实上,我试图build立一个LEMP服务器,但Nginx现在听起来像阿拉伯语。 在这个“简短”介绍之后,这里是我的问题: 什么是切换到Nginx的recjomended阈值(用户数)? 假设我的网站同时不会有超过300个在线用户,那么即使服务内容更快一点,我是否真的要花上几个星期去研究Nginx呢? Apache / PHP-fpm和Nginx / PHP-fpm之间在安全性方面存在重大差异吗? 最后但并非最不重要的是:我刚刚从OVH切换到Digital Ocean。 数字海洋似乎太棒了。 它们为您提供LEMP服务器的预build图像。 Digital Ocean的Nginx安全设置有多less? 我只是因为我search了很多Nginx的强化技巧,其中大部分是在构buildNginx 之前执行的。 使用Digital Ocean的LEMP服务器的人可以帮助我吗? 注:我想这个信息将是重要的,以回复:产品。 服务器(在启动时)将是:4c / 8t intel – 8GB内存 – SSD硬盘 非常感谢你。