第1章 Nginx
一、什麼是Nginx?
很多人對apache非常的熟悉,Nginx和Apache類似,都屬於Web容器,同時也是一款高性能的
HTTP和反向代理軟件,發音(engine x)
二、爲什麼要選擇Nginx
Nginx和Apache最大的區別:
(1)Apache處理速度非常慢,而且佔用很多內存資源,Nginx正好相反,
(2)在功能Apache的所有模塊都是支持動靜態編譯,而Nginx都是靜態編譯
(3)Apache對FCGI的支持不好,而Nginx對FCGI支持非常的好.
(4)在處理鏈接上,Nginx支持epoll,而Apache卻不支持
(5)從安裝包看Nginx只有百K,Apache都按照M以算,非常的龐大.
三、Nginx的優勢
(1)作爲WEB服務器,Nginx處理靜態文件,索引文件 自動搜索的效率非常之高
(2)作爲代理服務器Nginx可以實現反向代理加速。提高網站的運行速度
(3)做負載均衡器,Nginx可以在內部直接支持Rails和PHP,可以支持HTTP代理服務器對外進行服務,同時還支持簡單的容錯利用算法進行負載
(4)在性能方面,Nginx專門爲性能優化而開發的,支持最併發鏈接數爲5萬.
(5)穩定方面 CPU佔用資源非常低,官方表示Nginx保持1萬個沒有活動的鏈接,佔用2.5M內存,官方聲稱在這種狀態DDOS攻擊是完全無效的.
(6)在高性能方面,Nginx支持熱部署,啓動速度特別迅速,因此可以不間斷服務的情況下,對軟件的版本配置或者升級,不影響現網業務,運行幾個月也不需要啓動,幾乎可以做7*24小時不間斷運行.
四、Nginx的模塊工作原理
Nginx由內核與模塊組成,內核的設計非常小巧和簡潔,完成的工作也是非常的簡單,通過配置文件
將客戶端請求映射到一個location block當中,然後通過這個location中的配置每個指令調用不同模塊,從而完成相應的工作.
Nginx的模塊從結構分:
核心模塊包含了:http模塊,event模塊,mail模塊
基礎模塊包含了:http Access模塊 Http FastCGI模塊 Http Proxy 模型和HTTP Rewrite模塊.
第三方模塊:Http upstream request模塊,Notice模塊和Http Access key模塊
以上模塊從功能分爲3個大類:
(1)Handerls(處理模塊)此類模塊直接請求,並且將輸出內容和修改Haders信息操作,
Handerls處理器模塊只有一個
(2)Filters(過濾模塊) 主要針對其它的處理模塊輸出內容和進修修改,最後由Nginx輸出.
(3)Proxies(代理模塊),此模塊Nginx的HTTP upstream之類的模塊,這些模塊實現了後端服務比如:FastCGI的信息交互,實現代理服務和負載均衡.
HTTP發出請求
|
|
\|/
Nginx內核
|
|
選擇一個Handlers處理模塊
|
|
Handlers模塊進行處理-----》交給Filters(過濾模塊)-->響應HTTP請求
在工作方式上,Nginx分爲單進程和雙進程兩種,Nginx默認工作方式爲單進程工作
#===============================================================
五、Nginx的安裝與配置
(1)安裝依賴庫
# yum -y install gcc openssl-devel zlib-devel
安裝pcre-delvel庫pcre-8.01.tar.gz
# cd /soft/
# tar xf pcre-8.01.tar.gz -C tmp/
# cd tmp/pcre-8.01/
#./configure && make && make install
安裝libmd5 libmd5-0.8.2b.tar.gz
# cd /soft/
#tar xf libmd5-0.8.2b.tar.gz -C tmp/
(2)安裝Nginx
# useradd user_00 -g users -s /sbin/nologin
# cd /soft/
# tar -xvf nginx-0.8.55.tar.gz -C tmp/
# cd tmp/nginx-0.8.55/
./configure --user=user_00 --group=users --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-md5=/soft/md5/ --with-sha1=auto/lib/sha1 --with-pcre=/soft/pcre-8.01/ --without-select_module --without-poll_module --without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_map_module --without-http_memcached_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --prefix=/usr/local/services/nginx-0.8.55
# make >/dev/null && make install >/dev/null
編譯參數詳解:
--with-http_realip_module
此模塊支持顯示真實來源IP地址,主要用於NGINX做前端負載均衡服務器使用。
-with-http_stub_status_module
這個模塊可以取得一些nginx的運行狀態,
--with-http_gzip_static_module
這個模塊在一個預壓縮文件傳送到開啓Gzip壓縮的客戶端之前檢查是否已經存在以“.gz”結尾的壓縮文件,這樣可以防止文件被重複壓縮。
--with-md5=/soft/md5/
設定md5庫文件路徑
--with-sha1=auto/lib/sha1
設定sha1庫文件路徑
--with-pcre=/soft/pcre-8.01
設定PCRE庫路徑
--without-select_module
標準連接模式。默認情況下自動編譯方式。您可以啓用或禁用通過使用-select_module和不帶- select_module配置參數這個模塊
--without-poll_module
不使用poll模塊
--without-http_ssi_module
不使用ngx_http_ssi_module模塊,此模塊處理服務器端包含文件(ssi)的處理.
--without-http_userid_module
不使用ngx_http_userid_module模塊
--without-http_geo_module
這個模塊基於客戶端的IP地址創建一些ngx_http_geoip_module變量,並與MaxMindGeoIP文件進行匹配,該模塊僅用於 0.7.63和0.8.6版本之後。但效果不太理想,對於城市的IP記錄並不是特別準確,不過對於網站的來源訪問區域的分析大致有一定參考性
。
--without-http_map_module
不使用ngx_http_map_module模塊
--without-http_memcached_module
不使用ngx_http_memcached_module模塊
--without-mail_pop3_module
不允許ngx_mail_pop3_module模塊
--without-mail_imap_module
不允許ngx_mail_imap_module模塊
--without-mail_smtp_module
不允許ngx_mail_smtp_module模塊
4.4、編輯主配置文件
配置文件位置:/usr/local/nginx/conf/nginx.conf
1. Nginx配置文件分爲4個部分
2. main(全局設置)
3. server(主機設置)
4. upstream(負載均衡設置)
5. localtion(URL匹配特定位置的設置)
這四個 server繼承main location繼承server
upstream即不會繼承 其它設置也不會被繼承.
#vim /usr/local/nginx/conf/nginx.conf
#==================================一全局配置#========================
user user_00 users; #這個模塊指令,指Nginx Worker 運用的用戶和組,默認爲nobody
worker_processes 8; #指定了要開啓的進程數,每進程佔用10M~12M的內存,建議和CPU的核心數量一樣多的進程就行了。
error_log logs/error.log; #全局錯誤日誌
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; #:用來指定進程ID的存儲位置.
#Specifies the value for maximum file descriptors that can be opened by this process.
#events 用來指定Nginx工作模式以及連接數上限
events {
use epoll; #使用epoll高效模式,適用於Linux,Unix使用kqueue
worker_connections 100000; #定義Ningx沒個進程最大的連接數。默認爲1024,受到文件句柄的約束。
}
worker_rlimit_nofile 100000; #打開的文件句柄數量最高爲10萬
#==================================二、HTTP配置========================
http {
include mime.types; #實現對配置文件所包含的文件設定
default_type application/octet-stream; #屬於HTTP核心模塊,默認設定爲二進制流
server_tokens off; #禁止錯誤頁面裏顯示nginx的版本號
# 定義日誌處理的格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# 定義它的hash表爲128K
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; #客戶端請求頭部的緩衝區大小,一般一個請求頭的大小不會超過1k
large_client_header_buffers 4 32k; #客戶請求頭緩衝大小 nginx默認會用client_header_buffer_size這個buffer來讀取header值
client_max_body_size 8m; #設定通過nginx上傳文件的大小
#sendfile指令指定 nginx 是否調用sendfile 函數(zero copy 方式)來輸出文件,
#對於普通應用,必須設爲on。
#如果用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡IO處理速度,降低系統uptime。
sendfile on;
tcp_nopush on; #此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用
tcp_nodelay on;
#keepalive_timeout 0;
keepalive_timeout 60; #keepalive超時時間。連接保持活動時間超過這個,將被關閉掉
#===================重要位置============
fastcgi_connect_timeout 300; #指定連接到後端FastCGI的超時時間。
fastcgi_send_timeout 300; #向FastCGI傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI傳送請求的超時時間。
fastcgi_read_timeout 300; #接收FastCGI應答的超時時間,這個值是指已經完成兩次握手後接收FastCGI應答的超時時間。
fastcgi_buffer_size 254k; #指定讀取FastCGI應答第一部分需要用多大的緩衝區
fastcgi_buffers 16 256k; #指定本地需要用多少和多大的緩衝區來緩衝FastCGI的應答。
fastcgi_busy_buffers_size 512k; #這個指令我也不知道是做什麼用,只知道默認值是fastcgi_buffers的兩倍。
fastcgi_temp_file_write_size 512k; #在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍。
gzip on; #該指令用於開啓或關閉gzip模塊(on/off)
gzip_min_length 1k; #設置允許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取
gzip_buffers 4 16k; #設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流
gzip_http_version 1.0; #識別http的協議版本
gzip_comp_level 2; #gzip壓縮比,1壓縮比最小處理速度最快
#匹配mime類型進行壓縮,無論是否指定,”text/html”類型總是會被壓縮的
gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
gzip_vary on; #和http頭有關係,加個vary頭,給代理服務器用的
charset utf-8; #字符集爲utf-8
access_log off; # 日常日誌關閉
log_not_found off; # 日常日誌關閉
error_page 400 403 405 408 /40x.html; # 錯誤返回頁面
error_page 500 502 503 504 /50x.html; # 錯誤返回頁面
#===================Server虛擬機配置保持默認============
server {
listen 80 default; #默認監聽端口號爲80
server_name _;
return 444;
}
#===================自定義虛擬機配置文件===========
include vhost/vhost.www.fanhougame.com;
}
主配虛擬Server配置文件如下:
server {
listen 80 ; #監聽端口號
#域名爲
server_name 10.0.0.201;
# 指定網站的目錄
root /data/www/oa.com/www.fanhougame.com ;
# localtion模塊指定網站首頁名稱
location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
return 444;
}
}
#:返回的錯誤信息
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
#可以指定多個localtion進行不同的指令處理,這裏是指定php的sock
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-5313-web.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_ignore_client_abort on;
}
#指定對網頁圖片格式進行緩存max表示10年,也可以是30d(天)
location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
error_log off;
access_log off;
#expires 30d;
expires max;
}
}
4.5、啓動與平滑重啓
# cd /usr/local/services/nginx-0.8.55/sbin/
# ./nginx –t 檢測配置文件是否有錯誤
# ./nginx 啓動nginx
# ./nginx -s reload
####################################################################################
六、 Nginx常用配置實例
6.1、負載均衡配置實例環境:
Master:10.0.0.201
Master Web 10.0.0.201:81
Slave1 Web 10.0.0.202:80
Slave2 Web 10.0.0.203:80
6.2、在201編輯主配置文件nginx.conf
# vim /usr/local/service/nginx/conf/nginx.conf
6.3、在201上面編輯虛擬主機配置文件vhost.aatest.com
# vim /usr/local/service/nginx/conf/vhost/vhost.aatest.com
6.4、在201上面編輯負載均很配置文件
# vim /usr/local/service/nginx/conf/vhost/vhost.fuzai
upstream www.aatest.com {
server 10.0.0.201:81 weight=1 max_fails=3 fail_timeout=20s;
server 10.0.0.202:80 weight=1 max_fails=3 fail_timeout=20s;
server 10.0.0.203:80 weight=1 max_fails=3 fail_timeout=20s;
}
server{
listen 80;
server_name www.aatest.com;
location / {
proxy_pass http://www.aatest.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
6.5、在202和203編輯如下主配置文件
# vim /usr/local/service/nginx/conf/nginx.conf
6.5、在202和203編輯如下虛擬主機配置文件
# vim /usr/local/service/nginx/conf/www.aatest.com
server {
listen 80 ; #監聽端口號
#域名爲
server_name www.aatest.com;
# 指定網站的目錄
root /opt/zeng ;
# localtion模塊指定網站首頁名稱
location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
return 444;
}
}
#:返回的錯誤信息
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
#可以指定多個localtion進行不同的指令處理,這裏是指定php的sock
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-5313-web.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_ignore_client_abort on;
}
#指定對網頁圖片格式進行緩存max表示10年,也可以是30d(天)
location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
error_log off;
access_log off;
#expires 30d;
expires max;
}
}
總結如下:
單機WEB配置
1、安裝庫
2、安裝Nginx
3、編輯Nginx.conf主文件(注意編輯完虛擬配置文件之後。要主文件相關連(include file>
4、編輯虛擬機的配置文件
5、啓動服務
6、建立網站對應的目錄,編寫一些靜態的html頁面.echo "test" >index.html
負載均衡的配置
環境:
10.0.0.201 負載均衡服務器:對外80
10.0.0.201 虛擬主機(WEB)81
10.0.32.111 端口號:80
10.0.0.131 端口號:80
步驟一、在201 32.111 131服務器上面都編輯Nginx.conf
步驟二、在201 111 131 編輯一個虛擬機配置文件
步驟三、在201上面編輯負載均衡的配置文件
步驟四、啓動服務
練習題目如下:
企業需要建立3個網站
www.gongda1.com
www.gongda2.com
www.gongda3.com
要求安裝Nginx,開3個虛擬主機
要求在瀏覽器裏面輸入:
http://www.gongda1.com
返回內容爲:this gongda1
http://www.gongda2.com
返回內容爲:this gongda2
http://www.gongda3.com
返回內容爲:this gongda3
一、什麼是Nginx?
很多人對apache非常的熟悉,Nginx和Apache類似,都屬於Web容器,同時也是一款高性能的
HTTP和反向代理軟件,發音(engine x)
二、爲什麼要選擇Nginx
Nginx和Apache最大的區別:
(1)Apache處理速度非常慢,而且佔用很多內存資源,Nginx正好相反,
(2)在功能Apache的所有模塊都是支持動靜態編譯,而Nginx都是靜態編譯
(3)Apache對FCGI的支持不好,而Nginx對FCGI支持非常的好.
(4)在處理鏈接上,Nginx支持epoll,而Apache卻不支持
(5)從安裝包看Nginx只有百K,Apache都按照M以算,非常的龐大.
三、Nginx的優勢
(1)作爲WEB服務器,Nginx處理靜態文件,索引文件 自動搜索的效率非常之高
(2)作爲代理服務器Nginx可以實現反向代理加速。提高網站的運行速度
(3)做負載均衡器,Nginx可以在內部直接支持Rails和PHP,可以支持HTTP代理服務器對外進行服務,同時還支持簡單的容錯利用算法進行負載
(4)在性能方面,Nginx專門爲性能優化而開發的,支持最併發鏈接數爲5萬.
(5)穩定方面 CPU佔用資源非常低,官方表示Nginx保持1萬個沒有活動的鏈接,佔用2.5M內存,官方聲稱在這種狀態DDOS攻擊是完全無效的.
(6)在高性能方面,Nginx支持熱部署,啓動速度特別迅速,因此可以不間斷服務的情況下,對軟件的版本配置或者升級,不影響現網業務,運行幾個月也不需要啓動,幾乎可以做7*24小時不間斷運行.
四、Nginx的模塊工作原理
Nginx由內核與模塊組成,內核的設計非常小巧和簡潔,完成的工作也是非常的簡單,通過配置文件
將客戶端請求映射到一個location block當中,然後通過這個location中的配置每個指令調用不同模塊,從而完成相應的工作.
Nginx的模塊從結構分:
核心模塊包含了:http模塊,event模塊,mail模塊
基礎模塊包含了:http Access模塊 Http FastCGI模塊 Http Proxy 模型和HTTP Rewrite模塊.
第三方模塊:Http upstream request模塊,Notice模塊和Http Access key模塊
以上模塊從功能分爲3個大類:
(1)Handerls(處理模塊)此類模塊直接請求,並且將輸出內容和修改Haders信息操作,
Handerls處理器模塊只有一個
(2)Filters(過濾模塊) 主要針對其它的處理模塊輸出內容和進修修改,最後由Nginx輸出.
(3)Proxies(代理模塊),此模塊Nginx的HTTP upstream之類的模塊,這些模塊實現了後端服務比如:FastCGI的信息交互,實現代理服務和負載均衡.
HTTP發出請求
|
|
\|/
Nginx內核
|
|
選擇一個Handlers處理模塊
|
|
Handlers模塊進行處理-----》交給Filters(過濾模塊)-->響應HTTP請求
在工作方式上,Nginx分爲單進程和雙進程兩種,Nginx默認工作方式爲單進程工作
#===============================================================
五、Nginx的安裝與配置
(1)安裝依賴庫
# yum -y install gcc openssl-devel zlib-devel
安裝pcre-delvel庫pcre-8.01.tar.gz
# cd /soft/
# tar xf pcre-8.01.tar.gz -C tmp/
# cd tmp/pcre-8.01/
#./configure && make && make install
安裝libmd5 libmd5-0.8.2b.tar.gz
# cd /soft/
#tar xf libmd5-0.8.2b.tar.gz -C tmp/
(2)安裝Nginx
# useradd user_00 -g users -s /sbin/nologin
# cd /soft/
# tar -xvf nginx-0.8.55.tar.gz -C tmp/
# cd tmp/nginx-0.8.55/
./configure --user=user_00 --group=users --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-md5=/soft/md5/ --with-sha1=auto/lib/sha1 --with-pcre=/soft/pcre-8.01/ --without-select_module --without-poll_module --without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_map_module --without-http_memcached_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --prefix=/usr/local/services/nginx-0.8.55
# make >/dev/null && make install >/dev/null
編譯參數詳解:
--with-http_realip_module
此模塊支持顯示真實來源IP地址,主要用於NGINX做前端負載均衡服務器使用。
-with-http_stub_status_module
這個模塊可以取得一些nginx的運行狀態,
--with-http_gzip_static_module
這個模塊在一個預壓縮文件傳送到開啓Gzip壓縮的客戶端之前檢查是否已經存在以“.gz”結尾的壓縮文件,這樣可以防止文件被重複壓縮。
--with-md5=/soft/md5/
設定md5庫文件路徑
--with-sha1=auto/lib/sha1
設定sha1庫文件路徑
--with-pcre=/soft/pcre-8.01
設定PCRE庫路徑
--without-select_module
標準連接模式。默認情況下自動編譯方式。您可以啓用或禁用通過使用-select_module和不帶- select_module配置參數這個模塊
--without-poll_module
不使用poll模塊
--without-http_ssi_module
不使用ngx_http_ssi_module模塊,此模塊處理服務器端包含文件(ssi)的處理.
--without-http_userid_module
不使用ngx_http_userid_module模塊
--without-http_geo_module
這個模塊基於客戶端的IP地址創建一些ngx_http_geoip_module變量,並與MaxMindGeoIP文件進行匹配,該模塊僅用於 0.7.63和0.8.6版本之後。但效果不太理想,對於城市的IP記錄並不是特別準確,不過對於網站的來源訪問區域的分析大致有一定參考性
。
--without-http_map_module
不使用ngx_http_map_module模塊
--without-http_memcached_module
不使用ngx_http_memcached_module模塊
--without-mail_pop3_module
不允許ngx_mail_pop3_module模塊
--without-mail_imap_module
不允許ngx_mail_imap_module模塊
--without-mail_smtp_module
不允許ngx_mail_smtp_module模塊
4.4、編輯主配置文件
配置文件位置:/usr/local/nginx/conf/nginx.conf
1. Nginx配置文件分爲4個部分
2. main(全局設置)
3. server(主機設置)
4. upstream(負載均衡設置)
5. localtion(URL匹配特定位置的設置)
這四個 server繼承main location繼承server
upstream即不會繼承 其它設置也不會被繼承.
#vim /usr/local/nginx/conf/nginx.conf
#==================================一全局配置#========================
user user_00 users; #這個模塊指令,指Nginx Worker 運用的用戶和組,默認爲nobody
worker_processes 8; #指定了要開啓的進程數,每進程佔用10M~12M的內存,建議和CPU的核心數量一樣多的進程就行了。
error_log logs/error.log; #全局錯誤日誌
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; #:用來指定進程ID的存儲位置.
#Specifies the value for maximum file descriptors that can be opened by this process.
#events 用來指定Nginx工作模式以及連接數上限
events {
use epoll; #使用epoll高效模式,適用於Linux,Unix使用kqueue
worker_connections 100000; #定義Ningx沒個進程最大的連接數。默認爲1024,受到文件句柄的約束。
}
worker_rlimit_nofile 100000; #打開的文件句柄數量最高爲10萬
#==================================二、HTTP配置========================
http {
include mime.types; #實現對配置文件所包含的文件設定
default_type application/octet-stream; #屬於HTTP核心模塊,默認設定爲二進制流
server_tokens off; #禁止錯誤頁面裏顯示nginx的版本號
# 定義日誌處理的格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# 定義它的hash表爲128K
server_names_hash_bucket_size 128;
client_header_buffer_size 32k; #客戶端請求頭部的緩衝區大小,一般一個請求頭的大小不會超過1k
large_client_header_buffers 4 32k; #客戶請求頭緩衝大小 nginx默認會用client_header_buffer_size這個buffer來讀取header值
client_max_body_size 8m; #設定通過nginx上傳文件的大小
#sendfile指令指定 nginx 是否調用sendfile 函數(zero copy 方式)來輸出文件,
#對於普通應用,必須設爲on。
#如果用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡IO處理速度,降低系統uptime。
sendfile on;
tcp_nopush on; #此選項允許或禁止使用socke的TCP_CORK的選項,此選項僅在使用sendfile的時候使用
tcp_nodelay on;
#keepalive_timeout 0;
keepalive_timeout 60; #keepalive超時時間。連接保持活動時間超過這個,將被關閉掉
#===================重要位置============
fastcgi_connect_timeout 300; #指定連接到後端FastCGI的超時時間。
fastcgi_send_timeout 300; #向FastCGI傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI傳送請求的超時時間。
fastcgi_read_timeout 300; #接收FastCGI應答的超時時間,這個值是指已經完成兩次握手後接收FastCGI應答的超時時間。
fastcgi_buffer_size 254k; #指定讀取FastCGI應答第一部分需要用多大的緩衝區
fastcgi_buffers 16 256k; #指定本地需要用多少和多大的緩衝區來緩衝FastCGI的應答。
fastcgi_busy_buffers_size 512k; #這個指令我也不知道是做什麼用,只知道默認值是fastcgi_buffers的兩倍。
fastcgi_temp_file_write_size 512k; #在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍。
gzip on; #該指令用於開啓或關閉gzip模塊(on/off)
gzip_min_length 1k; #設置允許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取
gzip_buffers 4 16k; #設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流
gzip_http_version 1.0; #識別http的協議版本
gzip_comp_level 2; #gzip壓縮比,1壓縮比最小處理速度最快
#匹配mime類型進行壓縮,無論是否指定,”text/html”類型總是會被壓縮的
gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
gzip_vary on; #和http頭有關係,加個vary頭,給代理服務器用的
charset utf-8; #字符集爲utf-8
access_log off; # 日常日誌關閉
log_not_found off; # 日常日誌關閉
error_page 400 403 405 408 /40x.html; # 錯誤返回頁面
error_page 500 502 503 504 /50x.html; # 錯誤返回頁面
#===================Server虛擬機配置保持默認============
server {
listen 80 default; #默認監聽端口號爲80
server_name _;
return 444;
}
#===================自定義虛擬機配置文件===========
include vhost/vhost.www.fanhougame.com;
}
主配虛擬Server配置文件如下:
server {
listen 80 ; #監聽端口號
#域名爲
server_name 10.0.0.201;
# 指定網站的目錄
root /data/www/oa.com/www.fanhougame.com ;
# localtion模塊指定網站首頁名稱
location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
return 444;
}
}
#:返回的錯誤信息
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
#可以指定多個localtion進行不同的指令處理,這裏是指定php的sock
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-5313-web.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_ignore_client_abort on;
}
#指定對網頁圖片格式進行緩存max表示10年,也可以是30d(天)
location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
error_log off;
access_log off;
#expires 30d;
expires max;
}
}
4.5、啓動與平滑重啓
# cd /usr/local/services/nginx-0.8.55/sbin/
# ./nginx –t 檢測配置文件是否有錯誤
# ./nginx 啓動nginx
# ./nginx -s reload
####################################################################################
六、 Nginx常用配置實例
6.1、負載均衡配置實例環境:
Master:10.0.0.201
Master Web 10.0.0.201:81
Slave1 Web 10.0.0.202:80
Slave2 Web 10.0.0.203:80
6.2、在201編輯主配置文件nginx.conf
# vim /usr/local/service/nginx/conf/nginx.conf
6.3、在201上面編輯虛擬主機配置文件vhost.aatest.com
# vim /usr/local/service/nginx/conf/vhost/vhost.aatest.com
6.4、在201上面編輯負載均很配置文件
# vim /usr/local/service/nginx/conf/vhost/vhost.fuzai
upstream www.aatest.com {
server 10.0.0.201:81 weight=1 max_fails=3 fail_timeout=20s;
server 10.0.0.202:80 weight=1 max_fails=3 fail_timeout=20s;
server 10.0.0.203:80 weight=1 max_fails=3 fail_timeout=20s;
}
server{
listen 80;
server_name www.aatest.com;
location / {
proxy_pass http://www.aatest.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
6.5、在202和203編輯如下主配置文件
# vim /usr/local/service/nginx/conf/nginx.conf
6.5、在202和203編輯如下虛擬主機配置文件
# vim /usr/local/service/nginx/conf/www.aatest.com
server {
listen 80 ; #監聽端口號
#域名爲
server_name www.aatest.com;
# 指定網站的目錄
root /opt/zeng ;
# localtion模塊指定網站首頁名稱
location / {
index index.php index.html index.htm;
if (!-e $request_filename) {
return 444;
}
}
#:返回的錯誤信息
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
#可以指定多個localtion進行不同的指令處理,這裏是指定php的sock
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-5313-web.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SERVER_NAME $http_host;
fastcgi_ignore_client_abort on;
}
#指定對網頁圖片格式進行緩存max表示10年,也可以是30d(天)
location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
error_log off;
access_log off;
#expires 30d;
expires max;
}
}
總結如下:
單機WEB配置
1、安裝庫
2、安裝Nginx
3、編輯Nginx.conf主文件(注意編輯完虛擬配置文件之後。要主文件相關連(include file>
4、編輯虛擬機的配置文件
5、啓動服務
6、建立網站對應的目錄,編寫一些靜態的html頁面.echo "test" >index.html
負載均衡的配置
環境:
10.0.0.201 負載均衡服務器:對外80
10.0.0.201 虛擬主機(WEB)81
10.0.32.111 端口號:80
10.0.0.131 端口號:80
步驟一、在201 32.111 131服務器上面都編輯Nginx.conf
步驟二、在201 111 131 編輯一個虛擬機配置文件
步驟三、在201上面編輯負載均衡的配置文件
步驟四、啓動服務
練習題目如下:
企業需要建立3個網站
www.gongda1.com
www.gongda2.com
www.gongda3.com
要求安裝Nginx,開3個虛擬主機
要求在瀏覽器裏面輸入:
http://www.gongda1.com
返回內容爲:this gongda1
http://www.gongda2.com
返回內容爲:this gongda2
http://www.gongda3.com
返回內容爲:this gongda3