nginx和php-fpm之間是怎樣通訊的?

來源:互聯網
上載者:User
server {root /srv/www;location / {            index  index.html index.htm;        }location ~ \.php$ {            fastcgi_pass   127.0.0.1:9000;            fastcgi_param SCRIPT_FILENAME /src/www$fastcgi_script_name;            include        fastcgi_params;        }}

在目錄/srv/www中有index.html index.php 兩個檔案,訪問localhost/index.html ,localhost 能夠正常顯示/srv/www/index.html頁面的內容,但是訪問index.php檔案卻顯示File Not Found,不知到是怎麼回事?在這種情況下難道nginx不是應該將/srv/www/index.php檔案先傳送給監聽在127.0.0.1:9000的php解析器,然後通過其解析後返回解析器的內容給用戶端嗎?不知到哪裡的問題,希望幫忙解答下

回複內容:

server {root /srv/www;location / {            index  index.html index.htm;        }location ~ \.php$ {            fastcgi_pass   127.0.0.1:9000;            fastcgi_param SCRIPT_FILENAME /src/www$fastcgi_script_name;            include        fastcgi_params;        }}

在目錄/srv/www中有index.html index.php 兩個檔案,訪問localhost/index.html ,localhost 能夠正常顯示/srv/www/index.html頁面的內容,但是訪問index.php檔案卻顯示File Not Found,不知到是怎麼回事?在這種情況下難道nginx不是應該將/srv/www/index.php檔案先傳送給監聽在127.0.0.1:9000的php解析器,然後通過其解析後返回解析器的內容給用戶端嗎?不知到哪裡的問題,希望幫忙解答下

估計是你nginx的fpm的配置問題。
我這邊這樣搞的,已經用過好多個網站了:

server {        listen   80; ## listen for ipv4; this line is default and implied        root /www/web;        index index.html index.htm index.php;        location / {                # First attempt to serve request as file, then                # as directory, then fall back to displaying a 404.                try_files $uri $uri/ /index.html;                # Uncomment to enable naxsi on this location                # include /etc/nginx/naxsi.rules        }        location ~ \.php$ {                fastcgi_split_path_info ^(.+\.php)(/.+)$;                fastcgi_pass unix:/var/run/php5-fpm.sock;                fastcgi_index index.php;                include fastcgi_params;        }}

看看fpm錯誤記錄檔,分分鐘定位問題啊!

location / {    index  index.php index.html index.htm;}

index 中需要加上index.php 優先識別最前面的檔案

問題出在這裡:

server {root /srv/www;#srv目錄location / {            index  index.html index.htm;        }location ~ \.php$ {            fastcgi_pass   127.0.0.1:9000;            fastcgi_param SCRIPT_FILENAME /src/www$fastcgi_script_name; #src目錄            include        fastcgi_params;        }}

另外:
下面那部分這樣寫最好:

location ~ \.php$ {        fastcgi_split_path_info ^(.+\.php)(/.+)$;        fastcgi_pass 127.0.0.1:9000;#        fastcgi_pass unix:/var/run/php5-fpm.sock;#這行和上面一行二選一。        fastcgi_index index.php;        include fastcgi_params;}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.