安装nginx和php-fpm
yum install nginx php-fpm
为php-fpm增加反向代理
cat >/etc/nginx/conf.d/my_php.conf<<EOF
server {
listen 80;
server_name my_php.lslxdx.com my_php.lslxdx.com;
root /var/www/html/my_php;
location / {
expires -1s;
try_files \$uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
fastcgi_param PATH_INFO \$fastcgi_path_info;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
EOF
创建网站目录
mkdir -p /var/www/html/my_php
添加测试php文件
cat > /var/www/html/my_php/info.php<<EOF
<?php
phpinfo();
?>
EOF
启动nginx和php-fpm
nginx
service php-fpm restart
注意
- php-fpm的默认监听9000端口,且仅接受127.0.0.1地址的访问, 这些配置在/etc/php-fpm.d/www.conf文件中
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
php-fpm是php的容器, 在使用nginx做反向代理时,应该使用fastcgi_pass,而非proxy_pass,这很关键
建议使用unix socket做本地转发,而非127.0.0.1:9000的方式,此时应该修改2个文件:
# /etc/php-fpm.d/www.conf
listen = /tmp/my_php_fpm.sock
# /etc/nginx/conf.d/my_php.conf
fastcgi_pass unix:/tmp/my_php_fpm.sock;
使用unix socket可能会导致404,原因是php-fpm没有对
/tmp/my_php_fpm.sock
的rw权限:
ll /tmp/my_php_fpm.sock
srw-rw—- 1 root root 0 7月 11 17:07 /tmp/my_php_fpm.sock
此时需要chmod a+rw /tmp/my_php_fpm.sock(这种方法不推荐,因为每次启动php-fpm后,都需要手动chmod),如果想从根本上解决这个问题,应该使用/etc/php-fpm.d/www.conf文件中配置的user
,启动php-fpm