Linux 配置 nginx + php

Posted prop_jeff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 配置 nginx + php相关的知识,希望对你有一定的参考价值。

为什么!!!我配过的服务器已经有5、6个了吧,为什么每一次配置都能要了我的老命??这次写清楚过程,以后再要被配服务器坑,我特么要砍人了。

提示:测试网站能否访问的时候,最好关掉浏览器的缓存功能或者勤清浏览器的缓存,以避免被缓存坑!

 

1. nginx

mac上通过brew安装nginx,万事开头容易,配置难。

找到nginx.conf,保持其所在文件夹常年打开不要关闭,因为后面还会经常来这个文件夹找东西。

nginx.conf 内容参照 https://github.com/daylerees/laravel-website-configs/blob/master/nginx.conf 

注意上面只给出了server块里的内容,不过server块以外的内容基本不用动。

还请注意 ‘location /’ 块内的内容,这里不推荐上文的配置,还请改成这个:

try_files   $uri /index.php?$query_string;

删去了 “$uri/”。如果不删去这一条,并且没有开启autoindex的话,直接访问一个目录会导致HTTP 403,这在前期配置的时候会造成不必要的困扰。

 

除此之外最好启用error.log,相应配置应该在文件的开头。

同时也请常年打开nginx的 error.log 所在文件夹,判断问题的时候也会经常用到。

 

2. php-fpm

这玩意相当于运行php的服务器,总之如果你的站点想运行php文件的话,php-fpm 和 nginx 都得保持在后台运行。

安装不多说,根据平台查找自己合适的方案。

也请找到这玩意的配置文件并常年打开。

修改user及group。

 

这玩意本身没什么坑的配置之处,主要还是得看nginx调用这玩意的那部分配置是否正确。

回到nginx.conf。

找到 location ~* php 啥啥啥的块。

这里有几个配置非常重要

1 fastcgi_pass                    unix:/var/run/php5-fpm.sock;
2 fastcgi_index                   index.php;
3 fastcgi_split_path_info         ^(.+\.php)(.*)$;
4 include                         /etc/nginx/fastcgi_params;
5 fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;

 

第1行,告诉nginx去哪里找php-fpm服务。这个得看你的php-fpm 是什么样的,有的通过如上所示的sock进行通信,有的通过127.0.0.1:9000(一般情况下)进行通信,请搞清楚你的php-fpm用的那种方案并修改这一行。

第4行,这里需要include 一个叫 fastcgi_params 的文件,应该和 nginx.conf 在一个文件夹下,路径填正确就行。

配置完后重启各个服务,再试试应该可以正常使用了。

 

下面贴出访问网站时可能遇到的问题及解决思路

1. 500 Internal Server Error

一般是php部分执行的时候出错了,翻看php-fpm 的error log以定位错误。

 

2. 403 Forbidden

可能是访问了一个文件夹,但是又没有开启autoindex(自动列出文件夹下的所有内容),于是被nginx禁止。

有可能在访问网站根目录时出现这个情况,请检查 ‘location /’ 块内的tryfiles又没有删去 "$uri/"。

 

3. 502 Gateway Error

nginx找不到php-fpm 服务,可能是php-fpm没开或者 ‘location php’ 块内的 fastcgi_pass 未正确填写。

以上是关于Linux 配置 nginx + php的主要内容,如果未能解决你的问题,请参考以下文章

Linux配置Nginx,MySql,php-fpm开机启动的方法

Linux (centos )下Nginx+PHP+MySQL配置——自己的lnmp配置

linux+nginx+php问题。我在linux上装了nginx+php,可是能打开网页却打不开.php文件,这是哪里问题呢??

Linux上的Nginx上设置支持PHP的解析

Linux下安装php环境并且配置Nginx支持php-fpm模块[www]

linux nginx 配置php