Blog

Keep up to date with the latest news

配置Nginx来支持PHP

人工手动安装好了LNMP环境,但在网站上打开php网页都变成了下载。研究了一下,原来是Nginx还没配置好以支持php。

修改Nginx的配置文件

我的Nginx安装目录是 /usr/local/nginx,切换到该目录:

cd /usr/local/nginx

打开nginx.conf配置文件:

vim conf/nginx.conf

在配置文件里面看到一段被注释掉的话:

#location ~ \.php$ {

# root html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

#}

去掉注释,再根据实际的网站根目录修改一下:

location ~ \.php$ {

root /home/html; #这是我的网站根目录

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

}

注意 fastcgi_pass 127.0.0.1:9000; 这一行,我们现在进入php的配置文件里确认php是不是使用这个端口,因为有些版本,如lnmp.org的版本,他们用的是socket。端口不一致将会出现 502 Bad Gateway 错误。

确保和PHP的端口一致

我的PHP安装目录是 /usr/local/php/ ,切换到该目录:

cd /usr/local/php/

再进入配置文件目录:

cd etc/php-fpm.d

vim www.conf

在里面可以看到监听的端口为:

listen = 127.0.0.1:9000

可以看到是一致的。

如果是lnmp.org的版本,他们的是 listen = /tmp/php-cgi.sock 。如果是这样,就要把Nginx配置里面 fastcgi_pass 对应的值改成 unix:/tmp/php-cgi.sock 。

重启一下Nginx,使配置生效:

cd /usr/local/nginx

sbin/./nginx -t #检查配置文件是否正确

sbin/./nginx -s reload #重启

注意路径问题

然后打开网站,出现了新错误,网页显示“File Not Found”。

出现这个错误是因为路径配置错误。打开Nginx的配置文件,修改下面这个路径即可:

#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

再次reload Nginx,打开网站的phpinfo()测试文件,成功!

其他注意事项

如果Nginx有配置ssl,记得在配置ssl的代码块里也加入上面那段代码:

server {

listen 443 ssl;

server_name linxianzhan.cn;

ssl_certificate /usr/local/nginx/cert/server.crt;

ssl_certificate_key /usr/local/nginx/cert/server.key;

ssl_session_cache shared:SSL:1m;

ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers on;

location / {

root /home/html;

index index.html index.htm;

}

location ~ \.php$ {

root /home/html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}