1、安裝nginx
sudo apt-get install nginx
2、配置nginx
sudo gedit /etc/nginx/sites-enabled/default
找到:index index.html index.htm;
改為:index index.php index.html index.htm;
找到:location ~ .php$ { * }
區塊
做如下調整(改動之處於行末有注釋):
location ~ .php$ { try_files $uri =404; #增加 fastcgi_split_path_info ^(.+.php)(/.+)$; #反注釋 ## NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # ## With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; ## With php5-fpm: fastcgi_pass unix:/var/run/php/php5.6-fpm.sock; #反注釋 fastcgi_index index.php; #反注釋 include fastcgi_params; #反注釋 }
3、解決php-fpm與nginx的小bug
按上述步驟操作后,由於nginx與php-fpm之間的一個小bug,會導致這樣的現象:
網站中的靜態頁面 *.html 都能正常訪問,而 *.php 文件雖然會返回200狀態碼,但實際輸出給瀏覽器的頁面內容卻是空白。
簡而言之,原因是nginx無法正確的將 *.php 文件的地址傳遞給php-fpm去解析,相當於php-fpm接受到了請求,但這請求卻指向一個不存在的文件,於是返回空結果。
為了解決這個問題,需要改動nginx默認的fastcgi_params配置文件:
sudo gedit /etc/nginx/fastcgi_params
#在文件的最后增加一行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
關於這行的內容,多說幾句,其中有兩個參數:
$document_root 即是指網站的根目錄
$fastcgi_script_name 則是指網站上的各個 *.php 文件名(其實是文件的相對路徑)
這兩個合在一起形成完整的 php file path,比如你的網站有個 /test/script.php 文件,nginx傳遞給php-fpm的完整路徑就是:/網站目錄/test/script.php
4、在/var/www/html文件夾中新建一個index.php文件
<!DOCTYPE html> <html> <body> <h1>My first PHP page</h1> <?php echo "Hello World!"; ?> </body> </html>
5、瀏覽器輸入127.0.0.1進行測試
效果如圖,表示成功。