一.nginxs的三個依賴包javascript
1.zlib庫。 gzip 模塊須要 zlib 庫 ( 下載: http://www.zlib.net/ )php
gzip(GNU-ZIP)是一種壓縮技術。通過gzip壓縮後頁面大小能夠變爲原來的30%甚至更小,這樣,用戶瀏覽頁面的時候速度會塊得多。gzip 的壓縮頁面須要瀏覽器和服務器雙方都支持,實際上就是服務器端壓縮,傳到瀏覽器後瀏覽器解壓並解析。瀏覽器那裏不須要咱們擔憂,由於目前的巨大多數瀏覽器 都支持解析gzip過的頁面。
Nginx的壓縮輸出有一組gzip壓縮指令來實現。相關指令位於http{….}兩個大括號之間。css
默認狀況下,Nginx的gzip壓縮是關閉的, gzip壓縮功能就是可讓你節省很多帶寬,可是會增長服務器CPU的開銷哦(與節約帶寬相比,寧願選擇節約帶寬,節約帶寬就是快速響應用戶的訪問)。html
Nginx默認只對text/html進行壓縮 ,若是要對html以外的內容進行壓縮傳輸,咱們須要手動來調。java
2.pcre庫。 rewrite 模塊須要 pcre 庫 ( 下載: http://www.pcre.org/ ) node
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正則表達式庫。這些在執行正則表達式模式匹配時用與Perl 5一樣的語法和語義是頗有用的。nginx
3.openssl庫。 ssl 功能須要 openssl 庫 ( 下載: http://www.openssl.org/ ) c++
默認狀況下ssl模塊並未被安裝,若是要使用該模塊則須要在編譯時指定–with-http_ssl_module參數,安裝模塊依賴於OpenSSL庫和一些引用文件,一般這些文件並不在同一個軟件包中。一般這個文件名相似libssl-dev。web
二.nginx安裝正則表達式
1.依賴環境安裝
yum -y install gcc gcc-c++ zlib openssl-devel zlib-devel
2.安裝pcre-devel庫
wget http://ftp.exim.llorien.org/pcre/pcre-8.36.tar.gz -P /download/ cd /download/ tar xf pcre-8.36.tar.gz -C /usr/src cd /usr/src/pcre-8.36 ./configure --prefix=/usr/local/pcre --enable-utf8 --enable-jit make && make install
3.安裝openssl(根據須要判斷是否安裝)
yum -y install openssl*
4.安裝nginx
wget http://nginx.org/download/nginx-1.8.1.tar.gz -P /download/ cd /download/ tar xf nginx-1.8.1.tar.gz cd nginx-1.8.1
groupadd -g 1001 deamon useradd -M -u 1001 -g deamon -s /sbin/nologin deamon ./configure --prefix=/usr/local/nginx --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/run/nginx/nginx.lock --user=daemon --group=daemon --with-pcre=/usr/src/pcre-8.36 --with-threads --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module make && make install
--with-pcre後面跟的是pcre的解壓路徑 --prefix=/usr/local/nginx #指定nginx 的安裝路徑 --error-log-path=/var/log/nginx/error.log #指定nginx錯誤日誌的路徑 --http-log-path=/var/log/nginx/access.log #指定用戶訪問http時信息保存路徑 --pid-path=/var/run/nginx/nginx.pid #指定nginx的PID路徑 --lock-path=/var/run/nginx/nginx.lock --user=daemon --group=daemon #指定nginx的用戶和組 --with-pcre=/usr/src/pcre-8.36 --with-threads #爲了支持rewrite重寫功能,指定pcre解壓路徑 ###########################附加經常使用選項-------------------------------- --with-http_stub_status_module:支持nginx狀態查詢 --with-http_ssl_module:支持https --with-http_spdy_module:支持google的spdy,想了解請百度spdy,這個必須有ssl的支持
三.nginx主配文件修改
配置說明:
配置文件位置:/usr/local/nginx/conf/nginx.conf
Nginx配置文件分爲4個部分
1. main(全局設置)
2. server(主機設置)
3. upstream(負載均衡設置)
4. localtion(URL匹配特定位置的設置)
server繼承main location繼承server
upstream即不會繼承其它設置也不會被繼承.
#==================================一全局配置#======================== 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萬 #==================================2、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; } }
四.開放端口
#vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
將上述代碼加入ssh服務(22端口)下面
啓動與平滑重啓
# cd /usr/local/services/nginx/sbin/ # ./nginx –t 檢測配置文件是否有錯誤 # ./nginx 啓動nginx # ./nginx -s reload 平滑重啓
本次配置:
1 user deamon; 2 worker_processes 8; #指定了要開啓的進程數,每進程佔用10M~12M的內存,建議和CPU的核心數量同樣多的進程就好了。 3 error_log /var/log/nginx/error.log warn; 4 pid /var/run/nginx/nginx.pid; 5 #Specifies the value for maximum file descriptors that can be opened by this process. 6 #events 用來指定Nginx工做模式以及鏈接數上限 7 events { 8 use epoll; #使用epoll高效模式,適用於Linux,Unix使用kqueue 9 worker_connections 100000; #定義Ningx沒個進程最大的鏈接數。默認爲1024,受到文件句柄的約束。 10 } 11 worker_rlimit_nofile 100000; #打開的文件句柄數量最高爲10萬 12 13 14 http { 15 include mime.types; 16 default_type application/octet-stream; 17 18 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 19 '$status $body_bytes_sent "$http_referer" ' 20 '"$http_user_agent" "$http_x_forwarded_for"'; 21 22 access_log /var/log/nginx/access.log main; 23 sendfile on; 24 #tcp_nopush on; 25 #keepalive_timeout 0; 26 keepalive_timeout 65; 27 server_names_hash_bucket_size 128; 28 client_header_buffer_size 32k; #客戶端請求頭部的緩衝區大小,通常一個請求頭的大小不會超過1k 29 large_client_header_buffers 4 32k; #客戶請求頭緩衝大小 nginx默認會用client_header_buffer_size這個buffer來讀取header值 30 client_max_body_size 8m; #設定經過nginx上傳文件的大小 31 32 33 gzip on; #該指令用於開啓或關閉gzip模塊(on/off) 34 gzip_min_length 1k; #設置容許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取 35 gzip_buffers 4 16k; #設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流 36 gzip_http_version 1.0; #識別http的協議版本 37 gzip_comp_level 2; #gzip壓縮比,1壓縮比最小處理速度最快 38 #匹配mime類型進行壓縮,不管是否指定,」text/html」類型老是會被壓縮的 39 gzip_types text/plain application/x-javascript text/css application/xml text/javascript; 40 gzip_vary on; #和http頭有關係,加個vary頭,給代理服務器用的 41 42 charset utf-8; #字符集爲utf-8 43 44 access_log off; # 平常日誌關閉 45 log_not_found off; # 平常日誌關閉 46 47 #fastcgi_temp_path /etc/nginx/tmp; 48 #fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m; 49 #fastcgi_cache_key " request_method request_uri"; 50 51 fastcgi_connect_timeout 300; #指定鏈接到後端FastCGI的超時時間。 52 fastcgi_send_timeout 300; #向FastCGI傳送請求的超時時間,這個值是指已經完成兩次握手後向FastCGI傳送請求的超時時間。 53 fastcgi_read_timeout 300; #接收FastCGI應答的超時時間,這個值是指已經完成兩次握手後接收FastCGI應答的超時時間。 54 fastcgi_buffer_size 254k; #指定讀取FastCGI應答第一部分須要用多大的緩衝區 55 fastcgi_buffers 16 256k; #指定本地須要用多少和多大的緩衝區來緩衝FastCGI的應答。 56 fastcgi_busy_buffers_size 512k; #這個指令我也不知道是作什麼用,只知道默認值是fastcgi_buffers的兩倍。 57 fastcgi_temp_file_write_size 512k; #在寫入fastcgi_temp_path時將用多大的數據塊,默認值是fastcgi_buffers的兩倍。 58 59 60 server { 61 listen 80 ; #監聽端口號 62 #域名爲 63 server_name localhost; 64 # 指定網站的目錄 65 root /www/; 66 # localtion模塊指定網站首頁名稱 67 location / { 68 index index.php index.html index.htm; 69 if (!-e $request_filename) { 70 return 444; 71 } 72 } 73 location ~ \.php$ { 74 root /www; 75 #fastcgi_cache MYAPP; 76 #fastcgi_cache_valid 200 60m; 77 fastcgi_pass unix:/tmp/php-cgi.sock; 78 fastcgi_index index.php; 79 fastcgi_cache_valid 200 60m; 80 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 81 include fastcgi_params; 82 } 83 location /zabbix{ 84 alias /www/zabbix; 85 } 86 #指定對網頁圖片格式進行緩存max表示10年,也能夠是30d(天) 87 location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ { 88 error_log off; 89 access_log off; 90 #expires 30d; 91 expires max; 92 } 93 } 94 }