NGINX和PHP之間的環境變數傳遞

2021-09-06 20:17:37 字數 1945 閱讀 8056

昨天遇到的,想將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.1

env[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 安裝就行了,不用自己編譯,節省很多時間,也避免了一些不必要的錯誤 下面依賴...