标签: fastcgi

你如何有条件地在 Nginx vhost 中包含文件?

在下面的行中,我可能有一个特定于站点的配置文件,其中包含该站点独有的其他fastcgi_params。如果这个文件存在,我想加载它。

server {
        listen 80 default;
        server_name _;
        root /path/www/$host;

        # Pass PHP scripts to php-fastcgi listening on port 9000
        location ~ \.php {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000;


                if (-f /path/www/$host/nginx.conf) {
                        include /path/www/$host/nginx.conf;
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,我得到的错误是:

nginx: [emerg] "include" 指令在这里是不允许的......

更新

我认为与其单独检查,不如让include 来检查我。

server {
        listen 80 default;
        server_name _;
        root /path/www/$host;

        # Pass PHP scripts to php-fastcgi listening on port 9000
        location ~ \.php {
                include fastcgi_params;
                fastcgi_pass 127.0.0.1:9000; …
Run Code Online (Sandbox Code Playgroud)

configuration nginx fastcgi

16
推荐指数
4
解决办法
3万
查看次数

如何在lighttpd中正确启用错误日志?

我有一个启用了 Lighttpd 和 fastcgi 的 Centos 5 系统。它记录访问但不记录错误。我有内部服务器错误 500 并且日志中没有信息,当我尝试打开不存在的文件时 - 错误日志中也没有信息。如何正确启用它?

下面是我启用的模块列表:

server.modules              = (
                               "mod_rewrite",
                               "mod_redirect",
                               "mod_alias",
#                                "mod_access",
#                               "mod_cml",
#                               "mod_trigger_b4_dl",
#                               "mod_auth",
                               "mod_status",
                               "mod_setenv",
                               "mod_fastcgi",
#                               "mod_webdav",
#                               "mod_proxy_core",
#                               "mod_proxy_backend_fastcgi",
#                               "mod_proxy_backend_scgi",
#                               "mod_proxy_backend_ajp13",
#                               "mod_simple_vhost",
#                               "mod_evhost",
#                               "mod_userdir",
#                               "mod_cgi",
#                               "mod_compress",
#                               "mod_ssi",
#                               "mod_usertrack",
#                               "mod_expire",
#                               "mod_secdownload",
#                               "mod_rrdtool",
                                "mod_accesslog" )
Run Code Online (Sandbox Code Playgroud)

下面是调试的设置:

## enable debugging
#debug.log-request-header     = "enable"
#debug.log-response-header    = "enable"
#debug.log-request-handling   = "enable"
debug.log-file-not-found     = "enable"
#debug.log-condition-handling = …
Run Code Online (Sandbox Code Playgroud)

log-files fastcgi lighttpd mod-fastcgi

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

子文件夹中的 nginx 项目

我对我的 nginx 配置感到沮丧,所以我要求帮助编写我的配置文件,以从同一根目录的子目录中提供多个项目。这不是虚拟主机,因为它们都使用相同的主机值。也许一个例子可以澄清我的尝试:

  • 请求192.168.1.1/应当成为index.php/var/www/public/
  • 请求192.168.1.1/wiki/应当成为index.php/var/www/wiki/public/
  • 请求192.168.1.1/blog/应当成为index.php/var/www/blog/public/

这些项目使用 PHP 并使用 fastcgi。

我目前的配置非常小。

server {
    listen 80 default;
    server_name localhost;

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

    root /var/www;
    index index.php index.html;

    location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www$fastcgi_script_name;
        include fastcgi_params;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经试过各种事情aliasrewrite,但没能得到的东西正确的FastCGI的设置。这似乎应该有比写位置的块,复制更雄辩的方式rootindexSCRIPT_FILENAME,等。

任何让我朝着正确方向前进的指针都表示赞赏。

php nginx fastcgi

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

Nginx/PHP-FPM 长日志行被截断

我不确定这是 Nginx 或 PHP-FPM 设置,但长日志行被截断。是否有增加最大日志行长度的设置?

php nginx fastcgi php-fpm fcgi

11
推荐指数
3
解决办法
9820
查看次数

配置userdir时nginx fastcgi“主脚本未知”

我讨厌配置 nginx。这太复杂了。如何让 PHP 在我的用户目录中工作?这是我的 nginx.conf 的相关部分:

    location ~ ^/~(.+?)(/.*)?$ {
        autoindex on;
        autoindex_exact_size off;
        alias /home/$1/public_html$2;

        location ~ \.php {
            include /etc/nginx/fastcgi.conf;
            fastcgi_intercept_errors on;
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这给了我错误:FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream在 nginx 错误日志中。

这是我的/etc/nginx/fastcgi.conf

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol; …
Run Code Online (Sandbox Code Playgroud)

nginx fastcgi php-fpm

11
推荐指数
3
解决办法
5万
查看次数

如何将自定义参数从 Nginx 传递给 PHP?

我正在与passNginx 1.2.4结合使用并尝试将自定义参数传递给. 以下是我目前找到的选项:PHP-FPM 5.4.8fastcgiPHP

  • 使用env指令设置环境变量 innginx并使用getenv()$_ENVfrom获取它PHP。问题是env只在main上下文中操作,而我需要在上下文中设置参数server

  • 使用fastcgi_param专为此设计的指令。

我曾尝试使用更改某些参数的值fastcgi_param但未成功:

nginx:

fastcgi_param PATH_INFO "/var/tmp";
Run Code Online (Sandbox Code Playgroud)

PHP:

我检查了我能找到的所有预定义数组:

echo '<pre>';
echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS);
echo "\n".'$_SERVER'."\n"; var_dump($_SERVER);
echo "\n".'$_GET'."\n"; var_dump($_GET);
echo "\n".'$_POST'."\n"; var_dump($_POST);
echo "\n".'$_FILES'."\n"; var_dump($_FILES);
echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST);
echo "\n".'$_SESSION'."\n"; var_dump($_SESSION);
echo "\n".'$_ENV'."\n"; var_dump($_ENV);
echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE);
echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg);
echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA);
echo "\n".'$http_response_header'."\n"; var_dump($http_response_header); …
Run Code Online (Sandbox Code Playgroud)

php nginx fastcgi php-fpm

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

php-fpm 向 nginx 返回空响应

nginx 正在通过 fastcgi 连接到 php-fpm,使用/etc/nginx/fastcgi_params位置块中的标准。

当从命令行连接到 /.status (php-fpm.ini::ping.path) 时cgi-fcgi -bind,结果按预期返回(X-Powered-By 设置、响应正文等)。

当使用 nginx 请求时,结果返回空(X-Powered-By 设置,没有正文长度或内容)。nginx 返回 200,因为它得到了“有效”响应。

监视 tcpdump,我在它们的 FCGI 标头中隔离了对奇偶校验的请求(减去仍由 shell 设置的用户相关环境变量。)

php nginx fastcgi php-fpm

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

mod_fastcgi 和 mod_proxy_fcgi 的区别

我已经搜索了答案,但似乎找不到与此问题相关的任何实质性内容。

应该在Apache2.4上使用mod_proxy_fcgi还是mod_fastcgiwith php-fpm

在安全性和性能方面有什么区别吗?有什么建议吗?

在此先感谢您的帮助。

fastcgi php-fpm apache-2.4

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

nginx + fastCGI + Django - 在发送给客户端的响应中出现数据损坏

我正在使用 FastCGI 在 nginx 后面运行 Django。我发现在发送给客户端的一些响应中,响应中间发生了随机数据损坏(中间可能有几百个字节左右)。

在这一点上,我已将其范围缩小为 nginx 的 FastCGI 处理程序或 Django 的 FastCGI 处理程序中的错误(即可能是 flup 中的错误),因为当我在独立(即runserver)模式下运行 Django 服务器时,从未发生此问题。它只发生在 FastCGI 模式下。

其他有趣的趋势:

  • 它往往发生在较大的响应上。当客户端第一次登录时,它们会被发送一堆 1MB 块以将它们同步到服务器数据库。在第一次同步之后,响应要小得多(通常一次只有几 KB)。损坏似乎总是发生在开始时发送的那些 1MB 块上。

  • 当客户端通过 LAN 连接到服务器(即低延迟、高带宽连接)时,这种情况发生得更频繁。这让我觉得在 nginx 或 flup 中存在某种竞争条件,并且会因数据速率的增加而加剧。

现在,我不得不通过在响应标头中放置一个额外的 SHA1 摘要来解决这个问题,并让客户端拒绝标头与正文校验和不匹配的响应,但这是一种可怕的解决方案。

有没有其他人经历过这样的事情,或者有任何关于如何确定是 flup 还是 nginx 有问题的指示,以便我可以向适当的团队提交错误?

在此先感谢您的帮助。

注意:我也在 lighttpd + FastCGI + Django 中发布了一个类似的错误:https : //stackoverflow.com/questions/3714489/lighttpd-fastcgi-django-truncated-response-sent-to-client-due-to - 出乎意料......即使这不是一回事(截断与损坏),它开始看起来像共同的罪魁祸首是 flup / Django 而不是 web 服务器..

编辑:我还应该注意我的环境是什么:

  • Mac Mini 上的 OSX 10.6.6

  • Python 2.6.1(系统)

  • Django 1.3(来自官方压缩包)

  • flup 1.0.2(来自 flup 站点上的 Python …

nginx fastcgi corruption django

10
推荐指数
1
解决办法
1722
查看次数

nginx,别名,php-fpm = 文件未找到

我正在尝试使用 DAViCal 设置 nginx。但是,我在日志中收到一个“文件未找到”,其中包含“FastCGI sent in stderr:”Primary script unknown”。看起来我的别名有问题,但我确实想不通。

我的虚拟主机:

server {
listen   80; ## listen for ipv4; this line is default and implied
listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

root /var/www-data;
index index.html index.htm index.shtml index.php;

# Make site accessible from http://localhost/
server_name just.a.server;

location / {
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ /index.html;
    ssi on;
    # Uncomment to enable naxsi …
Run Code Online (Sandbox Code Playgroud)

php nginx alias fastcgi php-fpm

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