我使用的環境是64位 ubuntu 14.04。nginx依賴以下模組:
l gzip模組需要 zlib 庫
l rewrite模組需要 pcre 庫
l ssl 功能需要openssl庫
1. 獲取pcre編譯安裝包,在上可以獲取當前最新的版本
2. 解壓縮pcre-xx.tar.gz包。
3. 進入解壓縮目錄,執行./configure。
4. make & make install
1. 獲取openssl編譯安裝包,在上可以獲取當前最新的版本。
2. 解壓縮openssl-xx.tar.gz包。
3. 進入解壓縮目錄,執行./config。
4. make & make install
1. 獲取zlib編譯安裝包,在上可以獲取當前最新的版本。
2. 解壓縮openssl-xx.tar.gz包。
3. 進入解壓縮目錄,執行./configure。
4. make & make install
1. 獲取nginx,在上可以獲取當前最新的版本。
2. 解壓縮nginx-xx.tar.gz包。
3. 進入解壓縮目錄,執行./configure
4. make & make install
若安裝時找不到上述依賴模組,使用--with-openssl=、--with-pcre=、--with-zlib=
指定依賴的模組目錄。如已安裝過,此處的路徑為安裝目錄;若未安裝,則此路徑為編譯安裝包路徑,nginx將執行模組的預設編譯安裝。
啟動nginx之後,瀏覽器中輸入http://localhost可以驗證是否安裝啟動成功。
安裝完成之後,配置目錄conf下有以下配置檔案,過濾掉了xx.default配置:
tyler@ubuntu:/opt/nginx-1.7.7/conf$ tree |grep -v default
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf
├── scgi_params
├── uwsgi_params
└── win-utf
除了nginx.conf,其餘配置檔案,一般只需要使用預設提供即可。
nginx.conf是主配置檔案,預設配置去掉注釋之後的內容如下圖所示:
l worker_process表示工作程序的數量,一般設定為cpu的核數
l worker_connections表示每個工作程序的最大連線數
l server{}塊定義了虛擬主機
n listener監聽埠
n server_name監聽網域名稱
n location{}是用來為匹配的 uri 進行配置,uri 即語法中的「/uri/」。location / 匹配任何查詢,因為所有請求都以 / 開頭。
u root指定對應uri的資源查詢路徑,這裡html為相對路徑,完整路徑為/opt/ opt/nginx-1.7.7/html/
u index指定首頁index檔案的名稱,可以配置多個,以空格分開。如有多個,按配置順序查詢。
從配置可以看出,nginx監聽了80埠、網域名稱為localhost、跟路徑為html資料夾(我的安裝路徑為/opt/nginx-1.7.7,所以/opt/nginx-1.7.7/html)、預設index檔案為index.html, index.htm、伺服器錯誤重定向到50x.html頁面。
可以看到/opt/nginx-1.7.7/html/有以下檔案:
tyler@ubuntu:/opt/nginx-1.7.7/html$ ls
50x.html index.html
這也是上面在瀏覽器中輸入http://localhost,能夠顯示歡迎頁面的原因。實際上訪問的是/opt/nginx-1.7.7/html/index.html檔案。
include mime.types;
預設下面截一段mime.types定義的副檔名與檔案型別對映關係,完整的請自行檢視:
nginx配置fastcgi解析時會呼叫fastcgi_params配置檔案來傳遞伺服器變數,這樣cgi中可以獲取到這些變數的值。預設傳遞以下變數:
這些變數的作用從其命名可以看出。
對比下fastcgi.conf與fastcgi_params檔案,可以看出只有以下差異:
tyler@ubuntu:/opt/nginx-1.7.7/conf$ diff fastcgi.conf fastcgi_params
2d1< fastcgi_param script_filename $document_root$fastcgi_script_name;
即fastcgi.conf只比fastcgi_params多了一行「fastcgi_param script_filename$document_root$fastcgi_script_name;」
原本只有fastcgi_params檔案,fastcgi.conf是nginx 0.8.30 (released: 15th of december 2009)才引入的。主要為是解決以下問題(參考:
原本nginx只有fastcgi_params,後來發現很多人在定義script_filename時使用了硬編碼的方式。例如,fastcgi_param script_filename/var/www/foo$fastcgi_script_name。於是為了規範用法便引入了fastcgi.conf。
不過這樣的話就產生乙個疑問:為什麼一定要引入乙個新的配置檔案,而不是修改舊的配置檔案?這是因為fastcgi_param指令是陣列型的,和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。換句話說,如果在同級定義兩次script_filename,那麼它們都會被傳送到後端,這可能會導致一些潛在的問題,為了避免此類情況,便引入了乙個新的配置檔案。
fastcgi_param script_filename $document_root$fastcgi_script_name;
include fastcgi_params;
而使用最新的方式:
include fastcgi.conf;
與fastcgi_params一樣,傳遞哪些伺服器變數,只有字首不一樣,以uwsgi_param開始而非fastcgi_param。
與fastcgi_params一樣,傳遞哪些伺服器變數,只有字首不一樣,以uwsgi_param開始而非fastcgi_param。
這三個檔案都是與編碼轉換對映檔案,用於在輸出內容到客戶端時,將一種編碼轉換到另一種編碼。
koi-win: charset_map koi8-r < -- > windows-1251
koi-utf: charset_map koi8-r < -- > utf-8
win-utf: charset_map windows-1251 < -- > utf-8
koi8-r是斯拉夫文字8位元編碼,供俄語及保加利亞語使用。在unicode未流行之前,koi8-r 是最為廣泛使用的俄語編碼,使用率甚至起iso/iec 8859-5還高。這3個檔案存在是因為作者是**人的原因。
fastcgi.conf vs fastcgi_params:
nginx 入門 安裝與簡單使用
nginx是乙個http伺服器,可以將伺服器上的靜態檔案 如html 通過http協議展現給客戶端。nginx也是反向 伺服器。說反向 之前先說一下正向 正向 相信很多大陸同胞都在這片神奇的土地上用過了。就是訪問國外網被牆了,然後找個 服務,通過該伺服器訪問國外 這個是正向 反向 是 客戶端訪問 伺...
nginx的安裝與配置 使用
sudo yum y install gcc pcre zlib zlib devel openssl openssl develwget tar xzvf nginx 1.10.3.tar.gz c devtools 進入解壓目錄 cd devtools nginx 1.10.3 編譯 confi...
nginx的安裝與簡單使用
1.伺服器環境 centos release 6.6 final 64位。2.prce pcre 8.35.tar.gznginx nginx 1.6.2.tar.gz 3.安裝prce 安裝路徑 home syn program pcre 8.35 root syn program wget2 解...