标签 web 下的文章

常见的502错误排查思路

1.配置错误

因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port

2.资源耗尽
lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会资源耗尽,一旦资源耗尽nginx找不到php-fpm就会出现502错误,

解决办法是去调整php-fpm.conf中的pm.max_children数值,使其增加,但是也不能无限增加,毕竟资源有限。
一般4G内存机器如果跑php-fpm和nginx,不跑mysql可以设置为150,8G为300以此类推。

- 阅读剩余部分 -

php不解析的排查步骤

看一下有没有加载libphp5.so

/usr/local/apache2/bin/apachectl -M

查看配置文件中是否有

AddType application/x-httpd-php .php

看看有没有加入index

DirectoryIndex index.html index.htm index.php

不要忘记重启apache

还有一个不容忽视的问题,就是检查你的selinux是否开启
命令: getenforce 如果结果是 Enforcing 就说明是打开的
关闭: setenforce 0
还要在配置文件中配置一把enforcing改为disabled

php的一些简单配置

一般的,LAMP环境中的PHP程序因为是作为Apache的一个模块,它的简单配置都发生在php.ini文件中。而LNMP环境因为PHP是作为一个独立的程序运行,所以和LAMP中略有不同。

一、设置时区

date.timezone = Asia/Shanghai

二、禁用危险函数

disable_funtions = 
eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

- 阅读剩余部分 -

yum安装的Nginx和编译安装的PHP出现502

心血来潮想试试在各种安装方式下的服务之间的耦合度。

PHP的配置内容:

[test]
listen = /tmp/php_test.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

- 阅读剩余部分 -

LNMP环境部署typecho出现404

今天做两台web服务器的高可用集群,在LNMP环境上安装typecho博客程序,使用NFS共享网站根目录。

其它的过程略过不表,只是到了安装typecho这里,本来应该是一件很容易的事情,但却出现了些小插曲。

typecho安装成功后,成功进入主页,但是点击其它页面都会出现404错误。分析Nginx日志只有404,没有其它报错,于是怀疑是NFS权限问题,但经过检查后并无差错。

无奈之下祭出Google大法,原来在lnmp环境中,typeecho必须设置伪静态的URL Rewrite,然而之前一直在lamp上搭建typecho并没有这种问题。

- 阅读剩余部分 -

隐藏web相关服务的版本号

一、隐藏apache的信息

在apache的http.conf中添加或修改成如下代码即可:

ServerTokens Prod
ServerSignature Off

二、隐藏Nginx版本信息

Nginx的版本号主要在两个地方会有:

  • 第一个是HTTP header,有个Server:nginx/1.x.x类似会暴露Web服务器所用软件名称以及版本号,这个也是大多数Web服务器最容易暴露版本号的地方。
  • 第二个地方是Nginx出错页面,比如404页面没有找到等,这是如果用户没有指定页面的话,那么Nginx自己的页面会有版本戳记。

- 阅读剩余部分 -