我想设置最大请求以防止我的系统 RAM 在出现内存泄漏时被填满。
但我不知道它在哪里。
最近我一直在尝试使用 Nginx(我通常使用 Apache)来设置 Web 服务器。但是,我在尝试将 phpMyAdmin 设置为alias 时遇到了问题。别名也正确地带您进入 phpMyAdmin 登录屏幕,但是当您输入有效凭据并点击开始时,您最终会返回登录屏幕而没有错误。
对我来说听起来像是 cookie 或会话问题......但是如果我符号链接 phpMyAdmin 目录并尝试通过符号链接版本登录它工作正常!符号链接和别名都设置了相同数量的 cookie,并且两者似乎都为正确的域和路径设置了 cookie。
我的 php 别名的 Nginx 配置如下:
location ~ ^/phpmyadmin/(.*\.php)$ {
alias /usr/share/phpMyAdmin/$1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
Run Code Online (Sandbox Code Playgroud)
有没有其他人经历过这种行为?任何人都对如何解决它有任何想法?
目标是让 PHP 知道正确的面向 Web 的 server_port。
设置是:
nginx 在端口 443 上反向代理以在端口 80 上反向代理到端口 8008 上的 nginx 并运行 php-fpm 作为 fastcgi。
达到 80 或 443 都可以正常工作,除了 $_SERVER['SERVER_PORT'] 在 php 中默认总是显示 8008。我可以对 fastcgi_param server_port 进行硬编码,但它仅适用于 80 或 443,但不能同时适用于两者。
# default
fastcgi_param SERVER_PORT $server_port;
# harcode to 80
fastcgi_param SERVER_PORT 80;
Run Code Online (Sandbox Code Playgroud)
如何获得可用于 php 的正确的面向外部的服务器端口?
我已经从运行 Wordpress 博客的源代码编译了 PHP 5.3.3 和 nginx 0.8.47。Wordpress 生成的 RSS 提要在大约 16k 处被截断(包括标题为 16k+90b)。通过将以下内容添加到我的 nginx 配置中:
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
Run Code Online (Sandbox Code Playgroud)
问题消失了.. 但是,从我在Nginx wiki 页面上阅读的内容来看,缓冲区仅确定缓冲何时会溢出到磁盘上。由于缓冲区太小,没有任何迹象表明响应可以被截断。
所以我的问题是,为什么在更改此设置之前响应会被截断?似乎请求不应该被截断,只是由于磁盘缓冲而变慢了一点。
附加信息:
安装并启用 APC 3.1.9(备用 PHP 缓存)后,使用pecl,我遇到了内部服务器错误。我检查了我的错误日志,这就是显示的内容。
错误日志:
PHP Fatal error: PHP Startup: apc_mmap: mkstemp on /tmp/apc.efdb4d failed: in Unknown on line 0
[Wed Jul 06 23:47:41 2011] [error] mod_fcgid: process /var/www/cgi-bin/cgi_wrapper/cgi_wrapper(22397) exit(communication error), get unexpected signal 11
Run Code Online (Sandbox Code Playgroud)
我没有将 APC 扩展名添加到我的php.ini文件中,而是在 中创建了一个apc.ini文件/etc/php.d/,这是我当前的 APC 配置
apc.ini 配置:
; /etc/php.d/apc.ini
extension = apc.so
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 128M
apc.optimization = 0
apc.num_files_hint = 4096
apc.ttl = 7200
apc.user_ttl = 7200
apc.gc_ttl = …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个简单的 Nginx 微缓存解决方案,我最终看到了两种拥有微缓存的方法。一些教程使用proxy_cache,而其他教程使用fastcgi_cache。这两种解决方案之间的区别、优缺点是什么?
谢谢!
我有一台运行 Apache + PHP-FPM + FastCGI 的 Ubuntu 14.04 服务器,为用户主页提供服务。为了安全起见,我在 Apache 的配置中启用了:
Header set X-Content-Type-Options: "nosniff"
Header set X-Frame-Options: "sameorigin"
Header set X-XSS-Protection: "1; mode=block"
Run Code Online (Sandbox Code Playgroud)
AllowOverride FileInfo已设置,因此用户可以Header在.htaccess需要时使用文件中的指令进行更多控制。但是,Apache 似乎不尊重在 CGI 中使用 PHP 时(当文件为 PHP 时 mod_headers 不发送标头),并且即使使用Header always,.htaccess HeaderPHP 文件的命令也会被忽略。
我的下一个想法是让用户修改他们的 PHP 代码以使用PHPheader函数,以便他们可以将其设置为 X,并且setifempty只有在用户没有时我才能使用它。经过一些试验,我发现这些条目有效:
Header set X-Frame-Options: "sameorigin" env=!SCRIPT_NAME
Header always setifempty X-Frame-Options: "sameorigin" env=SCRIPT_NAME
Run Code Online (Sandbox Code Playgroud)
在没有env测试的情况下,我发现第一个命令,即使是setifempty, or merge,也会添加一个标题,因此您会X-Frame-Options …
如果我有配置
fastcgi_cache_path /opt/nginx levels=1:2 keys_zone=TEST:100m inactive=40m;
..
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_cache_valid 30m;
Run Code Online (Sandbox Code Playgroud)
我的缓存会在path上面存放多久?
当我在 Apache 下运行 cgi 脚本时,任何输出都会快速发送到客户端。但是,当我使用 fcgiwrap 在 nginx 下运行它时,在脚本完成或产生大量输出之前,似乎没有任何内容发送到客户端。特别是在使用 git-http-backend 时,这会导致克隆大型存储库时的网关超时(并且缺乏克隆较小存储库的进度信息)。
可以使用以下脚本查看此行为。
#!/bin/bash
echo "Content-type: text/html"
echo
while :
do
echo this is a test.
sleep 5
done
Run Code Online (Sandbox Code Playgroud)
在 apache 下,客户端将每 5 秒获取一些数据。
在带有 fcgiwrap 的 nginx 下,我没有得到任何数据和网关超时。
nginx 和 fcgiwrap 是来自 Debian Jessie 的软件包。版本 1.1.0-5 和 1.6.2-5+deb8u4
所以问题
我有一个 512mb 的单核服务器实例。截至目前,我有大约 3 个网站,大约有 10k 篇文章,在所有网站上我都启用了 wp 超级缓存。典型的缓存时间为 3600 秒或 7200 秒。而且 vps 实例保持得很好。它每天只会出现一次约 60% 的 cpu 峰值。
我读到,一旦一个网站达到 30k 篇文章,由于文件数量(Linux 文件系统)或类似的原因,依赖 wp 超级缓存并不是一个好的做法。
所以我想也许我应该改用 nginx fastcgi 缓存。在他们的网站中,与 wp super cache 或 w3 Total Cache 相比,他们推荐将此作为最佳实践。
考虑到内存的数量,我有可用的。你们认为 fastcgi 缓存会是我网站的更好替代方案吗?
内存缓存呢?
我的 php 7.1 启用了 opcache。