導航:首頁 > 編程語言 > nginx配置php

nginx配置php

發布時間:2022-02-11 12:46:42

linux配置nginx+php,但是無法訪問PHP文件,能訪問html

nginx調用PHP有sock方式和埠方式

1、確認nginx已經調用了php;
2、先確認你的nginx使用什麼方式調用PHP;
3、如果使用埠方式,埠對不對應,如果使用SOCK方式,那麼路徑對不對;

㈡ php.ini怎麼配置nginx

php5.3中要重啟PHP-fpm,單純的重啟nginx不能使php.ini設置生效php-fpm重啟
ps aux | grep php-fpm
kill -QUIT xxxx
/usr/local/php/sbin/php-fpm
nginx 啟動
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

㈢ php在nginx下怎麼配置文件

nginx本身不能處理PHP,它只是個web伺服器,當接收到請求後,如果是php請求,則發給php解釋器處理,並把結果返回給客戶端。
nginx一般是把請求發fastcgi管理進程處理,fascgi管理進程選擇cgi子進程處理結果並返回給Nginx本文以php-fpm為例介紹如何使nginx支持PHP.

㈣ 如何正確配置Nginx + PHP

對很多人而言,配置Nginx+PHP無外乎就是搜索一篇教程,然後拷貝粘貼。聽上去似乎也沒什麼問題,可惜實際上網路上很多資料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷貝粘貼,早晚有一天會為此付出代價。
假設我們用PHP實現了一個前端控制器,或者直白點說就是統一入口:把PHP請求都發送到同一個文件上,然後在此文件里通過解析「REQUEST_URI」實現路由。
此時很多教程會教大家這樣配置Nginx+PHP:
server {
listen 80;
server_name foo.com;
root /path;
location / {
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
location ~ .php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /path$fastcgi_script_name;

fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
這裡面有很多錯誤,或者說至少是壞味道的地方,大家看看能發現幾個。

我們有必要先了解一下Nginx配置文件里指令的繼承關系:Nginx配置文件分為好多塊,常見的從外到內依次是「http」、「server」、「location」等等,預設的繼承關系是從外到內,也就是說內層塊會自動獲取外層塊的值作為預設值(有例外,詳見參考)。
參考:UNDERSTANDING THE NGINX CONFIGURATION INHERITANCE MODEL

讓我們先從「index」指令入手吧,在問題配置中它是在「location」中定義的:
location / {
index index.html index.htm index.php;
}
一旦未來需要加入新的「location」,必然會出現重復定義的「index」指令,這是因為多個「location」是平級的關系,不存在繼承,此時應該在「server」里定義「index」,藉助繼承關系,「index」指令在所有的「location」中都能生效。
參考:Nginx Pitfalls

接下來看看「if」指令,說它是大家誤解最深的Nginx指令毫不為過:
if (!-e $request_filename) {
rewrite . /index.php last;
}
很多人喜歡用「if」指令做一系列的檢查,不過這實際上是「try_files」指令的職責:
try_files $uri $uri/ /index.php;
除此以外,初學者往往會認為「if」指令是內核級的指令,但是實際上它是rewrite模塊的一部分,加上Nginx配置實際上是聲明式的,而非過程式的,所以當其和非rewrite模塊的指令混用時,結果可能會非你所願。
參考:IfIsEvil and How nginx 「location if」 works

下面看看「fastcgi_params」配置文件:
include fastcgi_params;
Nginx有兩份fastcgi配置文件,分別是「fastcgi_params」和「fastcgi.conf」,它們沒有太大的差異,唯一的區別是後者比前者多了一行「SCRIPT_FILENAME」的定義:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注意:$document_root 和 $fastcgi_script_name 之間沒有 /。
原本Nginx只有「fastcgi_params」,後來發現很多人在定義「SCRIPT_FILENAME」時使用了硬編碼的方式,於是為了規范用法便引入了「fastcgi.conf」。
不過這樣的話就產生一個疑問:為什麼一定要引入一個新的配置文件,而不是修改舊的配置文件?這是因為「fastcgi_param」指令是數組型的,和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。換句話說,如果在同級定義兩次「SCRIPT_FILENAME」,那麼它們都會被發送到後端,這可能會導致一些潛在的問題,為了避免此類情況,便引入了一個新的配置文件。
參考:FASTCGI_PARAMS VERSUS FASTCGI.CONF – NGINX CONFIG HISTORY
此外,我們還需要考慮一個安全問題:在PHP開啟「cgi.fix_pathinfo」的情況下,PHP可能會把錯誤的文件類型當作PHP文件來解析。如果Nginx和PHP安裝在同一台伺服器上的話,那麼最簡單的解決方法是用「try_files」指令做一次過濾:
try_files $uri =404;
參考:Nginx文件類型錯誤解析漏洞

依照前面的分析,給出一份改良後的版本,是不是比開始的版本清爽了很多:
server {
listen 80
server_name foo.com;
root /path;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php;
}
location ~ .php$ {
try_files $uri =404;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
實際上還有一些瑕疵,主要是「try_files」和「fastcgi_split_path_info」不夠兼容,雖然能夠解決,但方案比較醜陋,具體就不多說了,有興趣的可以參考問題描述。
補充:因為「location」已經做了限定,所以「fastcgi_index」其實也沒有必要.

㈤ nginx 使用php解析的基本幾個配置

#運行用戶

user nobody;

#啟動進程,通常設置成和cpu的數量相等

worker_processes 1;

#全局錯誤日誌及PID文件

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

#工作模式及連接數上限

events {

#epoll是多路復用IO(I/O Multiplexing)中的一種方式,

#僅用於linux2.6以上內核,可以大大提高nginx的性能

use epoll;

#單個後台worker process進程的最大並發鏈接數

worker_connections 1024;

# 並發總數是 worker_processes 和 worker_connections 的乘積

# 即 max_clients = worker_processes * worker_connections

# 在設置了反向代理的情況下,max_clients = worker_processes * worker_connections / 4 為什麼

# 為什麼上面反向代理要除以4,應該說是一個經驗值

# 根據以上條件,正常情況下的Nginx Server可以應付的最大連接數為:4 * 8000 = 32000

# worker_connections 值的設置跟物理內存大小有關

# 因為並發受IO約束,max_clients的值須小於系統可以打開的最大文件數

# 而系統可以打開的最大文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右

# 我們來看看360M內存的VPS可以打開的文件句柄數是多少:

# $ cat /proc/sys/fs/file-max

# 輸出 34336

# 32000 < 34336,即並發連接總數小於系統可以打開的文件句柄總數,這樣就在操作系統可以承受的范圍之內

# 所以,worker_connections 的值需根據 worker_processes 進程數目和系統可以打開的最大文件總數進行適當地進行設置

# 使得並發總數小於操作系統可以打開的最大文件數目

# 其實質也就是根據主機的物理CPU和內存進行配置

# 當然,理論上的並發總數可能會和實際有所偏差,因為主機還有其他的工作進程需要消耗系統資源。

# ulimit -SHn 65535

}

http {

#設定mime類型,類型由mime.type文件定義

include mime.types;

default_type application/octet-stream;

#設定日誌格式

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

#sendfile 指令指定 nginx 是否調用 sendfile 函數(zero 方式)來輸出文件,

#對於普通應用,必須設為 on,

#如果用來進行下載等應用磁碟IO重負載應用,可設置為 off,

#以平衡磁碟與網路I/O處理速度,降低系統的uptime.

sendfile on;

#tcp_nopush on;

#連接超時時間

#keepalive_timeout 0;

keepalive_timeout 65;

tcp_nodelay on;

#開啟gzip壓縮

gzip on;

gzip_disable "MSIE [1-6].";

#設定請求緩沖

client_header_buffer_size 128k;

large_client_header_buffers 4 128k;

#設定虛擬主機配置

server {

#偵聽80埠

listen 80;

#定義使用 www.nginx.cn訪問

server_name www.nginx.cn;

#定義伺服器的默認網站根目錄位置

root html;

#設定本虛擬主機的訪問日誌

access_log logs/nginx.access.log main;

#默認請求

location / {

#定義首頁索引文件的名稱

index index.php index.html index.htm;

}

# 定義錯誤提示頁面

error_page 500 502 503 504 /50x.html;

location = /50x.html {

}

#靜態文件,nginx自己處理

location ~ ^/(images|javascript|js|css|flash|media|static)/ {

#過期30天,靜態文件不怎麼更新,過期可以設大一點,

#如果頻繁更新,則可以設置得小一點。

expires 30d;

}

#PHP 腳本請求全部轉發到 FastCGI處理. 使用FastCGI默認配置.

location ~ .php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

#禁止訪問 .htxxx 文件

location ~ /.ht {

deny all;

}

}

}

網頁鏈接

㈥ 如何正確配置Nginx+PHP

其實沒多復雜
1. 將nginx和php都裝好了
2. 然後配置nginx,將php請求分發給php-fpm處理
linux下的配置文件一般在/usr/local/nginx/conf/nginx.conf
找到下面字樣,並取消注釋,且注意這個$document_root這個地方(原本應為$script***的,改成$document_root)
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

3.啟動nginx和php-fpm,然後寫個phpinfo腳本測試下成功與否就可以了

㈦ 如何在linux下配置nginx支持php

需要。
如果是nginx+php配置,也可以通過查找php執行路徑
ps
aux
|
grep
php
如,路徑為
/usr/local/nginx/sbin/php-fpm
然後執行以下命令
/usr/local/nginx/sbin/php-fpm
-i
|
grep
「Loaded
Configuration
File」
即可看到php載入的配置文件

㈧ 如何正確配置 Nginx 和 PHP

直接貼上代碼逐行進行講解,此處貼出一個能正常啟動php腳本的最簡nginx vhost配置:

[plain] view plain
server {
listen 8011;
server_name test.cn;
location ~ \.php?.*$ {
root /share/test;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

1、第一個大括弧 server{ }:不必多說,代表一個獨立的server,

2、listen 8011:代表該server監聽8011埠

3、location ~ \.php?.*${
}:代表一個能匹配對應uri的location,用於匹配一類uri,並對所匹配的uri請求做自定義的邏輯、配置。這里的location,匹配了所有帶.php的uri請求,例如:http://192.168.244.128:8011/test.php/asdasd
http://192.168.244.128:8011/index.php等

4、root /share/test:請求資源根目錄,告訴匹配到該location下的uri到/share/teset文件夾下去尋找同名資源。

5、fastcgi_pass 127.0.0.1:9000:這行開始是本文的重點:這行代碼的意思是,將進入到該location內的uri請求看做是cgi程序,並將請求發送到9000埠,交由php-fpm處理。

6、fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
:這行配置意思是:動態添加了一行fastcgi配置,配置內容為SCRIPT_FILENAME,告知管理進程,cgi腳本名稱。由於我的nginx中只有fastcgi_params文件,沒有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具體值,就必須要動態的添加這行配置。

7、include fastcgi_params; 引入fastcgi配置文件

以上就是最簡潔版的nginx啟動php腳本的最簡配置,當重啟nginx之後,在/share/test目錄下創建一個xx.php文件,輸入<?php
echo "hello world"; ?>保存,然後在瀏覽器中訪問localhost:8011/xx.php
就可以在網頁上顯示hello world了。

㈨ nginx 怎麼修改php配置

####nginx配置虛擬機,此配置是支持tp框架pathinfo路徑的
server{
#監聽埠
listen 80;
#網站域名
server_name web.api55.com;
#默認索引頁
index index.php;
#網站目錄
root /usr/local/nginx/html/api55;
location ~ .+\.php($|/) {
set $script $uri;
set $path_info "/";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php?IF_REWRITE=1;
include fastcgi.conf;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root/$script;
fastcgi_param SCRIPT_NAME $script;
}
}

####負載均衡服務配置
upstream web{
server 192.168.67.135 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.67.136 weight=1 max_fails=3 fail_timeout=20s;
}
####刪除原來web.api53.com里的server段里的location段,增加這一段location
location /{
proxy_pass http://web;
}

###################nginx轉發php文件給apache
# 動態文件.php請求轉發給後端Apache
location ~ .php$ {
# 向後端伺服器發起請求時添加指定的header頭信息
proxy_set_header Host $http_host;
# 向後端伺服器發送真實 IP
proxy_set_header X-Real-IP $remote_addr;
# 讓後端如php能直接通過變數獲取真實IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
# nginx找不到文件時,轉發請求給後端Apache
location @proxy {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}

閱讀全文

與nginx配置php相關的資料

熱點內容
愛旅行的預備程序員 瀏覽:111
安卓qq瀏覽器怎麼轉換到ios 瀏覽:292
不同編譯器的庫可以調用嗎 瀏覽:455
灰度信託基金加密 瀏覽:421
宿遷程序員兼職網上接單 瀏覽:924
電視編譯器怎麼設置 瀏覽:276
手機如何解壓漢字密碼的壓縮包 瀏覽:701
為什麼很多程序員愛用vim 瀏覽:828
安卓手機怎麼連接寶華韋健音響 瀏覽:555
12星座製作解壓球 瀏覽:867
java調用oracle數據 瀏覽:827
怎麼在伺服器上上傳小程序源碼 瀏覽:304
空中加油通達信指標公式源碼 瀏覽:38
分卷解壓只解壓了一部分 瀏覽:760
php網站自動登錄 瀏覽:705
合肥凌達壓縮機招聘 瀏覽:965
怎麼找到文件夾的圖標 瀏覽:237
linuxc編程pdf百度雲 瀏覽:192
會計pdf下載 瀏覽:835
c開源cf源碼 瀏覽:951