标签: fastcgi

如何配置apache2和fastCGI来运行我的c ++应用程序

我用c ++编写了一个程序并用gcc编译它(就像fastcgi.com中的示例一样),但我不知道如何在localhost上运行它.

我搜索的每个地方,我发现mod_fcgi的php配置不适用于c ++.

是否有任何机构配置apache和mod_fcgi来运行c ++ Web应用程序???

c++ apache fastcgi

9
推荐指数
1
解决办法
1万
查看次数

如何解决Plesk中的FastCGI超时问题?

PHP支持目前设置为:作为快速CGI运行.

我一直在服务器日志中收到这些错误:

mod_fcgid:在45秒内读取数据超时

脚本头的过早结束:index.php

应该快速修复我想,但我找不到要编辑的文件.这是我可以从Plesk改变的东西.

有谁知道如何增加超时?

php fastcgi centos plesk connection-timeout

9
推荐指数
2
解决办法
2万
查看次数

mod_fcgid:多线程FastCGI现在还是计划中的未来?

到目前为止的事实

根据" mod_fcgi不是mod_fastcgi的替代品 "和" mod_fcgid和多线程FastCGI应用程序的问题 ",mod_fcgid并不是设计为期望FastCGI服务器能够同时处理多个请求,即不期望FastCGI服务器是多线程的.

前者说:

它们都支持已发布的"FastCGI"协议,但它们如何控制它们的FastCGI服务器有很大不同.mod_fcgid可以快速消除FastCGI服务器并启动新服务器.

后者说:

似乎mod_fcgid不知道我的服务器是多线程的,并且能够处理多个请求.

这只是两个引用,其他地方也有一些.

连续问题

线程不仅仅是节省CPU和内存,而且避免了创建新进程的开销(创建一个线程比创建一个进程更轻),这可以通过硬件或操作系统性能来减轻; 这也是一个逻辑问题,不容易缓解:线程属于同一个进程,不仅是性能,还有逻辑,例如.进程无法共享线程可以共享的内容,因为进程是隔离运行的(模IPC,但不一样).

至少出于这个逻辑原因,可能会引发多线程FastCGI服务器的问题.FastCGI服务器可以保存上下文(在进程之间共享可能很大且成本很高),当它被设计为多线程服务器时,它对于所有请求处理程序是全局的.为每个并发请求分配新进程不允许更多地确保公共上下文.

这个问题

以上两个报价是否仍然正确(一个是2011年,另一个是2010年)?我在网上搜索了这个主题,但找不到任何相关内容.如果它仍然是真的,那么,它是否总是正确或是否有预期的计划mod_fcgid,要了解多线程FastCGI服务器并接受这些服务器可能被设计为处理多个并发请求?

apache multithreading fastcgi fcgid mod-fcgid

9
推荐指数
1
解决办法
2284
查看次数

如何限制从PHP发送的出站SMTP邮件

我们有共享托管服务器,它们使用PHP fastcgi(在IIS上)为多个客户端(共享托管).客户经常使用旧的可利用代码,这会导致其应用程序出现漏洞,最终被黑客用来安装恶意代码.大多数情况下,此代码用于从我们的服务器发送垃圾邮件.

我们无法控制客户代码,因此修补漏洞是不可能的.

但是,我们希望阻止客户端发送垃圾邮件,因为他们会在Y时间内发送超过X封电子邮件.

设置是基于fastcgi的,因此php和webserver之间几乎没有关系.PHP通过localhost上的SMTP发送邮件.邮件服务器允许中继所有localhost连接(显然).

我想到的一件事是在fastcgi环境中设置一个包含标识符的环境变量,并使用php的prepend文件选项为php的邮件程序发送的所有邮件添加标题.之后我们可以使用该邮件标题来识别垃圾邮件的罪魁祸首.

上面的选项在发送电子邮件时仍然不会使用常规telnet(telnet localhost,HELO,MAIL FROM等)来处理垃圾邮件脚本.

我的问题是:我是否提到了处理我们问题的最好也许唯一的选择?或者有更好的解决方案吗?如果是这样,请解释您将如何处理该问题.

php email iis-6 smtp fastcgi

9
推荐指数
1
解决办法
7642
查看次数

Nginx下载php而不是运行它

我在Linux REHL机器上设置了一个Nginx php服务器.当访问html文件一切顺利,但尝试访问php文件时,文件被下载而不是被执行.

这是我的nginx.conf:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
Run Code Online (Sandbox Code Playgroud)

......这是服务器块:

server {
    listen       80;
    server_name  {mywebsitename};

    #access_log  logs/host.access.log  main;

    location / {
        root   /usr/share/nginx/html/{mywebsitename}/;
    }

    location /ngx_status_2462 {
      stub_status on;
      access_log   off;
      allow all;
    }

    location ~ …
Run Code Online (Sandbox Code Playgroud)

php linux fastcgi nginx

9
推荐指数
2
解决办法
2万
查看次数

Nginx:使用fastcgi_pass时覆盖主机头

我正在尝试覆盖使用fastcgi_pass时传递给基于php的应用程序(特别是Phabricator)的http主机头.
我在使用proxy_pass时发现了很多这样做的例子,但我似乎无法找到如何使用fastcgi_pass执行此操作的示例.具体来说,我希望代理的php应用程序将主机头看作"phabricator.localhost".

(这样做的原因是我想将几个不同的域与Phabricator webapp相关联,但它只允许一个域关联,并且它拒绝任何未创建该域的请求.)

我很擅长用FastCGI配置Nginx,所以我不确定fastcgi的工作原理.任何帮助表示赞赏.

这是我的Nginx服务器配置:

  server {
    server_name phabricator.localhost  www.example.com example.com;
    root /opt/phabricator/phabricator/webroot;

    location / {
      index index.php;
      rewrite ^/(.*)$ /index.php?__path__=/$1 last;
    }

    location = /favicon.ico {
      try_files $uri =204;
    }

    location /index.php {
    fastcgi_pass   localhost:9000;
    fastcgi_index   index.php;

    #### HERE ARE MY ATTEMPTS #####
    #proxy_set_header HOST phabricator.localhost;
    #fastcgi_param SERVER_NAME phabricator.localhost;
    #fastcgi_pass_header 'Host: phabricator.localhost';
    #fastcgi_pass_header 'Host: phabricator.localhost';
    #add_header Host phabricator.localhost;
    #proxy_set_header Host phabricator.localhost;
    #### END ATTEMPTS ####

    fastcgi_param  REDIRECT_STATUS    200;
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param  QUERY_STRING       $query_string;
    fastcgi_param  REQUEST_METHOD …
Run Code Online (Sandbox Code Playgroud)

php fastcgi nginx hostheader phabricator

9
推荐指数
1
解决办法
6669
查看次数

由于PHP-FPM监听队列,站点变得无法访问,CPU接触100%

我一直绞尽脑汁试图解决这个问题,这个问题每隔几个小时在我的生产服务器上随机出现一个Wordpress博客(流量不错:平均每天实时用户2000天,好日子5000+,每分钟浏览量)从300到700+不等.

我使用Newrelic来监控性能,我注意到一件奇怪的事情:

每隔几个小时(随机),PHP-FPM池状态如下所示(昨天采取的真实状态)

pool:                 www
process manager:      static
start time:           02/Jan/2017:05:03:16 -0500
start since:          27290
accepted conn:        1107594
listen queue:         777
max listen queue:     794
listen queue len:     40000
idle processes:       0
active processes:     100
total processes:      100
max active processes: 101
max children reached: 0
slow requests:        0
Run Code Online (Sandbox Code Playgroud)

重新启动PHP-FPMnginx解决问题,但它会在几个小时内再次发生.任何帮助表示赞赏.请指导我.


服务器设置:

DigitalOcean 48GB Memory
16 Core Processor
480GB SSD Disk
Run Code Online (Sandbox Code Playgroud)

PHP-FPM池设置:

pm = static
pm.max_children = 100
pm.max_requests = 5000
Run Code Online (Sandbox Code Playgroud)

nginx配置:

worker_processes  32;
worker_rlimit_nofile 100000;
events …
Run Code Online (Sandbox Code Playgroud)

php wordpress fastcgi nginx

9
推荐指数
1
解决办法
603
查看次数

没有这样的文件或目录:AH02454:FCGI:尝试连接到 Unix 域套接字 /var/run/php/php5.6-fpm.sock (*) 失败

我有这样的虚拟主机设置

 <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
    <FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
    </FilesMatch>
            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
Run Code Online (Sandbox Code Playgroud)

phpinfo() 显示我的网站有 php 5.6 版本。好的!

现在我正在尝试使用 Mod_Ruid2 来限制权限。我将以下内容添加到我的虚拟主机

RDocumentChRoot /var /www/html
<Directory "/www/html/">
        Require all granted
        RMode config
        RUidGid admin0 admin0
</Directory>
Run Code Online (Sandbox Code Playgroud)

尝试访问该网站后,我在日志中看到错误

[Sun Oct 13 16:09:02.492117 2019] [proxy:error] [pid 13571] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /var/run/php/php5.6-fpm.sock (*) failed
[Sun Oct 13 16:09:02.492194 2019] [proxy_fcgi:error] [pid 13571] [client 192.168.0.110:47622] AH01079: failed to make …
Run Code Online (Sandbox Code Playgroud)

php apache fastcgi apache-modules apache2.4

9
推荐指数
2
解决办法
3万
查看次数

Nginx + Php-fpm fastcgi 上游超时

我在长时间运行的 PHP 脚本时遇到问题:

<?php
sleep(70); # extend 60s
phpinfo();
Run Code Online (Sandbox Code Playgroud)

每次504 Gateway Time-outNginx 响应 60 秒后都会终止。

当我检查 Nginx 错误时,我可以看到请求超时:

... [error] 1312#1312: *2023 upstream timed out (110: Connection timed out) while reading response header from upstream, ... , upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", ...
Run Code Online (Sandbox Code Playgroud)

/etc/nginx/conf.d/timeout.conf我浏览了相关问题并尝试增加创建包含以下内容的文件的超时:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_connect_timeout 600;
Run Code Online (Sandbox Code Playgroud)

我还阅读了fastcgi核心模块的 Nginx 文档,搜索默认设置为 60 秒的任何配置。

我排除了client_*超时,因为它们返回HTTP 408而不是HTTP 504响应。

这是 FastCGI 的 Nginx 服务器配置部分: …

php timeout fastcgi nginx fpm

9
推荐指数
1
解决办法
3万
查看次数

如何让 PHP-FPM 与带有 FastCGI 的 nginx-proxy 一起工作?

我试图让nginx的代理工作用php-fpm的变种PHP官方图像通过fastcgi。不幸的是,我似乎无法这样做。我确信这个问题只是一些我不知道的简单问题。

我已尽我所能遵循nginx-proxy的说明,并将其归结为一种非常简单的方法来重新创建问题。这是我的docker-compose.yml文件:

version: "3"

services:
  proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    environment:
      - DEFAULT_HOST=test.local

  fpm:
    image: php:fpm
    environment:
      - VIRTUAL_HOST=test.local
      - VIRTUAL_PROTO=fastcgi
Run Code Online (Sandbox Code Playgroud)

然后我index.php通过运行放入一个简单的文件:

docker container exec -it web_fpm_1 /bin/bash -c 'echo "<?php phpinfo(); ?>" > /var/www/html/index.php'
Run Code Online (Sandbox Code Playgroud)

(它放在web_前面是因为这个项目在一个名为 的目录中web/。)

我还可以修改我的hosts文件,以点test.local127.0.0.1,这样我就可以测试它。但是,每次尝试浏览都会test.local导致空白页面。

web_proxy_1据我所知,容器的日志没有显示任何异常:

? docker container logs web_proxy_1
WARNING: /etc/nginx/dhparam/dhparam.pem was not found. …
Run Code Online (Sandbox Code Playgroud)

php fastcgi docker jwilder-nginx-proxy

9
推荐指数
1
解决办法
4858
查看次数