Linux 配置 nginx + php

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

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

 

1. nginxlaravel

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

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

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

注意上面只给出了server块里的内容,不过server块之外的内容保持默认都行。浏览器

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

try_files   $uri /index.php?$query_string;

删去了 “$uri/”。若是不删去这一条,而且没有开启autoindex的话,直接访问一个目录会致使HTTP 403,这在前期配置的时候会形成没必要要的困扰。服务器

 

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

同时也请常年打开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 未正确填写。

相关文章
相关标签/搜索