昨天遇到的,想將ip訪問轉換成網域名稱訪問。則nginx需要將相關的變數轉換後傳遞給php。
網上有一系統的方法:
前面講過該不該把資訊寫在伺服器配置檔案裡?、通過php擴充套件hidef來define常量,這裡介紹一下如何在nginx中設定$_server變數值?
1、通過nginx的fastcgi_param來設定
在nginx配置檔案中,可以在nginx總體的配置檔案nginx.conf中,也可以在單獨的**配置環境中進行設定,如:www.test.com.conf
在配置環境server段location中新增相應的配置資訊:
location ~ .*\.(php|php5)?$
這裡只新增了fastcgi_param db_name 『www.test.com』;乙個值。
新增後重啟nginx;
2、通過php主配置檔案php-fpm.conf來設定
這個設定必須放在主配置檔案php-fpm.conf裡,不能放到include指令設定的子配置檔案裡,否則會報錯:「array are not allowed in the global section」
直接在配置檔案中新增:
env[database_host] = 192.168.0.1env[database_username] = administrator
env[database_password] = e1bfd762321e409cee4ac0b6e841963c
新增後重啟php-fpm
通過上面2種方式新增$_server變數值後,我們就可以直接在php檔案中通過$_server來獲取相應的變數值了。
不過據說配置資訊通過nginx的fastcgi_param來設定的話,當nginx和php互動時,會帶來大量的資料傳輸。
nginx配置fastcgi解析php時會呼叫fastcgi_params配置檔案來傳遞伺服器變數,預設內容如下:
1
2
3
4
5
#引數設定 #傳遞為php變數名 #nginx自有變數,可自定義
fastcgi_param query_string $query_string;
fastcgi_param request_method $request_method;
fastcgi_param content_type $content_type;
fastcgi_param content_length $content_length;
可以修改配置檔案設定自定義變數傳遞到php-cgi端:
1
fastcgi_param haiyun "hello haiun";
新建php檔案通過$_server[""]變數測試:
1
2
3
<?
echo
$_server
[
"haiyun"
];
?>
1
2
curl www.haiyun.me
/test
.php
hello haiyun
1
env[haiyun] = test
nginx安裝php環境
此次安裝版本為7.0.33 2.安裝依賴的包 yum y install libxml2 yum y install libxml2 devel yum y install openssl yum y install openssl devel yum y install curl yum y in...
Nginx與PHP之間的執行原理
nginx是 人最早開發的webserver,現在已經風靡全球,相信大家並不陌生。php也通過二十多年的發展來到了7系列版本,更加關注效能。這對搭檔在最近這些年,叱吒風雲,基本上lnmp成了當下的標配。可是,你用了這麼多年的nginx php的搭配,你真正知道他們之間是怎麼互動怎麼通訊的麼?ngin...
nginx 的 php 開發環境部署
今天來做一下 nginx 的分享 首先是編譯需要的一些東西 gcc c libtool gzip 模組需要 zlib 庫 rewrite 模組需要 pcre 庫 ssl 功能需要 openssl 庫 安裝依賴 直接用 yum 安裝就行了,不用自己編譯,節省很多時間,也避免了一些不必要的錯誤 下面依賴...