1. 程式人生 > 其它 >Nginx 伺服器安裝及配置檔案詳解

Nginx 伺服器安裝及配置檔案詳解

1. 安裝nginx

1.1 選擇穩定版本

我們編譯安裝nginx來定製自己的模組,機器CentOS 6.2 x86_64。首先安裝缺少的依賴包:

# yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

這些軟體包如果yum上沒有的話可以下載原始碼來編譯安裝,只是要注意編譯時預設安裝的目錄,確保下面在安裝nginx時能夠找到這些動態庫檔案(ldconfig)。

從 http://nginx.org/en/download.html 下載穩定版nginx-1.6.3.tar.gz到/usr/local/src下解壓。

為了後續準備我們另外下載2個外掛模組:nginx_upstream_check_module-0.3.0.tar.gz —— 檢查後端伺服器的狀態,nginx-goodies-nginx-sticky-module-ng-bd312d586752.tar.gz(建議在/usr/local/src下解壓後將目錄重新命名為nginx-sticky-module-ng-1.2.5) —— 後端做負載均衡解決session sticky問題(與upstream_check模組結合使用需要另外打補丁,請參考nginx負載均衡配置實戰)。

請注意外掛與nginx的版本相容問題,一般外掛越新越好,nginx不用追新,穩定第一。nginx-1.4.7,nginx-sticky-module-1.1,nginx_upstream_check_module-0.2.0,這個搭配也沒問題。sticky-1.1與nginx-1.6版本由於更新沒跟上編譯出錯。(可以直接使用Tengine,預設就包括了這些模組)

[root@cachets nginx-1.6.3]# pwd
/usr/local/src/nginx-1.6.3
[root@cachets nginx-1.6.3]# ./configure --prefix=/usr/local/nginx-1.6 --with-pcre /
> --with-http_stub_status_module --with-http_ssl_module /
> --with-http_gzip_static_module --with-http_realip_module /
> --add-module=../nginx_upstream_check_module-0.3.0
[root@cachets nginx-1.6.3]# make && make install

1.2 常用編譯選項說明

nginx大部分常用模組,編譯時./configure –help以–without開頭的都預設安裝。

  • –prefix=PATH : 指定nginx的安裝目錄。預設 /usr/local/nginx
  • –conf-path=PATH : 設定nginx.conf配置檔案的路徑。nginx允許使用不同的配置檔案啟動,通過命令列中的-c選項。預設為prefix/conf/nginx.conf
  • –user=name: 設定nginx工作程序的使用者。安裝完成後,可以隨時在nginx.conf配置檔案更改user指令。預設的使用者名稱是nobody。–group=name類似
  • –with-pcre : 設定PCRE庫的原始碼路徑,如果已通過yum方式安裝,使用–with-pcre自動找到庫檔案。使用–with-pcre=PATH時,需要從PCRE網站下載pcre庫的原始碼(版本4.4 – 8.30)並解壓,剩下的就交給Nginx的./configure和make來完成。perl正則表示式使用在location指令和 ngx_http_rewrite_module模組中。
  • –with-zlib=PATH : 指定 zlib(版本1.1.3 – 1.2.5)的原始碼解壓目錄。在預設就啟用的網路傳輸壓縮模組ngx_http_gzip_module時需要使用zlib 。
  • –with-http_ssl_module : 使用https協議模組。預設情況下,該模組沒有被構建。前提是openssl與openssl-devel已安裝
  • –with-http_stub_status_module : 用來監控 Nginx 的當前狀態
  • –with-http_realip_module : 通過這個模組允許我們改變客戶端請求頭中客戶端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意義在於能夠使得後臺伺服器記錄原始客戶端的IP地址
  • –add-module=PATH : 新增第三方外部模組,如nginx-sticky-module-ng或快取模組。每次新增新的模組都要重新編譯(Tengine可以在新加入module時無需重新編譯)

再提供一種編譯方案

./configure /
> --prefix=/usr /
> --sbin-path=/usr/sbin/nginx /
> --conf-path=/etc/nginx/nginx.conf /
> --error-log-path=/var/log/nginx/error.log /
> --http-log-path=/var/log/nginx/access.log /
> --pid-path=/var/run/nginx/nginx.pid  /
> --lock-path=/var/lock/nginx.lock /   
> --user=nginx /
> --group=nginx /
> --with-http_ssl_module /
> --with-http_stub_status_module /
> --with-http_gzip_static_module /
> --http-client-body-temp-path=/var/tmp/nginx/client/ /
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ /
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ /
> --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi /
> --with-pcre=../pcre-7.8
>