我有2个网站在nginx上设置,正确的应该加载取决于哪个域被访问。 例如:website1.com website2.com 但是,访问这两个域时,它们都会加载website1.com。 我的configuration有什么问题? 两个configuration都在启用网站的单独文件中 website1.comconfiguration server { listen 80; listen [::]:80 ipv6only=on; root /var/www/website1.com; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name website1.com; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.php?$query_string; # […]
我正在将单个服务器上的每个网站从一个PHP实例中移出(所有网站中的所有文件都由apache拥有,并且只安装了默认的php库,而没有安装php-fpm) …我正在为每个单独的网站安装一个php-fpm池。 更好的安全性和网站的分离是我的目标,最大的目标是1个网站中的PHP脚本将无法从另一个网站访问PHP脚本。 我显然做错了什么。 我的环境: CentOS 7 PHP 5.4.16 Apache 2.4.6 下面是一个php-fpm池configuration文件的示例: [root@host]# cat /etc/php-fpm.d/website1.com.conf [website1.com] user = user1 group = user1 listen = /var/run/php-fpm/website1.com.sock listen.owner = user1 listen.group = user1 php_admin_value[disable_functions] = exec,passthru,shell_exec,system php_admin_flag[allow_url_fopen] = on php_admin_value[short_open_tag] = On pm = ondemand pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 […]
闻起来就像一个重复的,我知道,但我现在已经尝试了5次这个安装程序,但我仍然无法得到这个工作。 大多数的configuration与chroot和多服务器等复杂,但我现在已经减less到最简单的configuration可能。 我想了解如何使用nginx以最简单的forms设置fpm …请耐心等待。 当前设置: CentOS 7 64位 nginx 1.8.0来自Nginx的回购 从Remi php56的PHP 5.6 除了/etc/nginx/conf.d/default.conf location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 添加和修改/etc/php-fpm.d/www.conf listen = /var/run/php-fpm/php-fpm.sock listen.owner = nginx listen.group = nginx listen.mode = 0660 新增文件/usr/share/nginx/html/info.php <?php phpinfo();?> 开始这两个服务 systemctl start nginx.service systemctl start php-fpm.service 最后tail -f /var/log/nginx/error.log 当读取来自上游的响应标题时,客户端:xx.xxx.xxx.xxx,服务器:本地主机,主机名称为“ […]
我试图在我的Apache(2.4.18)服务器(使用mod_proxy_fcgi )上dynamic确定用于不同分离的PHP“apps”(不同的套接字导致不同的PHP-FPM池)的Unix套接字 : <DirectoryMatch "/home/apps/app_(?<appname>[a-zA-Z]+)"> <FilesMatch \.php$> SetHandler "proxy:unix://var/run/app_%{env:MATCH_APPNAME}.sock|fcgi://localhost:42001" </FilesMatch> </DirectoryMatch> 不幸的是, Apache与SetHandler指令一起使用时, 似乎无法识别/评估 <DirectoryMatch>指令中由正则expression式匹配定义的variables 。 error.log说: [proxy:error] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/app_%{MATCH_APPNAME}e.sock (*) failed 如何将一个variables传递给SetHandler指令? 当我使用UDS的“刚性”path(例如"proxy:unix://var/run/app_someappname.sock|fcgi://localhost:42001" ,我的PHP-FPM正常工作,但似乎有在它使用一个variables时出现问题。 我也尝试使用几个variables连接在一起来构buildpath: <FilesMatch \.php$> Define one "proxy:unix://var/run/app_" Define two ".sock|fcgi://localhost:42001" Define final ${one}%{MATCH_APPNAME}e${two} Header set HANDLER_PATH ${final} </FilesMatch> […]
最近,我们注意到由redis引起的生产环境的CPU峰值,这可以在下面看到: 为了解决这个问题,我每天大概两次重新启动redis服务器(这显然很不理想,我想找出根本原因。 以下是我到目前为止所看到的一些事情: 1)查看redis日志文件中的任何exception。 以下似乎是可疑的: 2)研究了nginx的访问日志,看看我们是否遇到exception高的stream量。 答案是不。 3)New Relic透露,这个问题从16日(大约一个月前)的11月21日开始,但是在那个时候没有发布代码。 以下是关于我们设置的一些细节: Redis服务器: Redis server v=2.8.17 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=64a9cf396cbcc4c7 PHP: 5.3.27与fpm Redisconfiguration: daemonize yes pidfile /var/run/redis/redis.pid port 6379 timeout 0 tcp-keepalive 0 loglevel notice logfile /var/log/redis/redis.log syslog-enabled yes databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error no rdbcompression yes rdbchecksum yes dbfilename […]
目前在我的Centos 6.8服务器上有一个502错误的网关错误。 2017/01/30 23:57:31 [crit] 26911#0: *1 connect() to unix:/var/run/php/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 192.168.0.15, server: 192.168.0.$ 我检查了目录是否存在,而不是。 我能find的最近的文件夹是/ var / run / php-fpm,它只包含php-fpm.pid。
我们知道在负载均衡中处理部分与数据库是分开的。 在处理我使用php-fpm。 我必须在php-fpm池中select一个linux用户和组。 如果我使用root作为php-fpm池的用户和组,是否有任何安全问题? 这些服务器仅用于运行我们的网站高stream量。 没有其他用户将主持网站。 ; Start a new pool named 'www'. ; the variable $pool can we used in any directive and will be replaced by the ; pool name ('www' here) [www] user = root group = root listen.owner = root listen.group = root listen.mode = 0660
我遇到一个奇怪的问题,当我启动php-fpm时,我收到以下消息: > /etc/init.d/php-fpm start Starting php-fpm …………………………….. failed 但是,当我看着日志文件看起来像一切都很好(我改变了输出debugging) Oct 28 21:25:28.434246 [DEBUG] pid 19872, fpm_event_init_main(), line 93: libevent: using epoll Oct 28 21:25:28.434392 [NOTICE] pid 19872, fpm_init(), line 50: fpm is running, pid 19872 Oct 28 21:25:28.435346 [DEBUG] pid 19872, fpm_children_make(), line 403: [pool www] child 19873 started Oct 28 21:25:28.436182 [DEBUG] pid 19872, […]
我们有一个运行PHP-FPM和NGINX的网站。 应用程序向使用40个字符的随机string键入的网站成员发送邀请(仅限字母数字 – 下面的示例)。 今天我们第一次遇到这个问题。 以下url: http://oursite.com/notices/response/approve/1960/OzH0pedV3rJhefFlMezDuoOQSomlUVdhJUliAhjS 正在返回一个404错误。 这种url格式已经工作了6个月,现在没有问题,其他url继续正确parsing。 我们有一个非常基本的configuration,一个简单的redirect到一个前端控制器,其他一切现在已经运行良好。 另外,如果我们将最后一个字符从“S”改为小写“s”以外的任何字符,404错误并且站点正确地处理请求,所以我想知道是否有某个安全模块可能会看到错误的具体string…不知道这是否有道理。 我们不确定在哪里寻找具体是什么导致问题,所以任何方向将不胜感激。 谢谢! 更新:在URL的末尾添加一个斜线,可以正确处理它…仍然希望能够深入到问题的底部。 解决:问题是由我的configuration的一部分引起的…意识到我应该张贴,但是出城,没有机会。 任何以“css”或“js”结尾并且不一定以点为前缀的URL(例如, http://site.com/response/somerandomestringcss )被解释为对文件的请求,并且请求是不通过前端控制器路由。 问题是我的正则expression式禁用日志logging,并在jpgs,gifs,icos等设置过期标题 我replace了这个: location ~* ^.+(jpg|jpeg|gif|css|png|js|ico)$ { 有了这个: location ~* \.(jpg|jpeg|gif|css|png|js|ico)$ { 而现在以css,js,png等结尾的url都是通过前端控制器正确路由的。 希望能帮助别人。
我有nginx在Debian Squeeze上安装了php-fpm 。 目录树是: 在/ var / WWW / mysite的 的index.php secret_folder_1 admin.php的 static.html secret_folder_2 admin.php的 static.html 图片 img01.jpg 我需要用basic_authclosuressecret_folder_1和secret_folder_2 。 现在configuration看起来像: location ~ /secret_folder_1/.+\.php$ { root /var/www/mysite/; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www/mysite$fastcgi_script_name; include fastcgi_params; auth_basic "Restricted Access"; auth_basic_user_file /path/to/.passwd; } location ~ /secret_folder_1/.* { root /var/www/mysite/; auth_basic "Restricted Access"; auth_basic_user_file /path/to/.passwd; } 相同的configuration为secret_folder_2 。 […]