寬帶新聞

糾結寬帶影響企業網站運行速度的請看:如何使用 Nginx 提升網站訪問速度
2016-08-18 11:57:55

       電信通作為企業寬帶運營商,經常會面對很多辦理企業寬帶來為自己的網站服務器提供服務的客戶。因此就會或多或少遇到一些質疑寬帶品質和穩定性影響網站服務器運行的情況。誠然這種可能性是肯定存在的,但是并不是唯一的主要原因。那么有沒有一種新的方法可以幫助我們更好的對網站進行優化呢?答案是肯定的。今天小編就向大家提供一個小技術,希望可以幫助到您。

       Nginx (“engine x”) 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。 Igor 將源代碼以類 BSD 許可證的形式發布。盡管還是測試版,但是,Nginx 已經因為它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名了。

       根據最新一期(08 年 6 月份)的 NetCraft 調查報告顯示,已經有超過兩百萬的主機使用了 Nginx,這個數字超過了另外一個輕量級的 HTTP 服務器 lighttpd, 排名第四,并且發展迅速。下面是這份報告的前幾名的報表:下圖是最近幾個月使用 Nginx 和 lighttpd 的網站數比較

       使用 Nginx 前必須了解的事項目前官方 Nginx 并不支持 Windows,您只能在包括 Linux、UNIX、BSD 系統下安裝和使用;Nginx 本身只是一個 HTTP 和反向代理服務器,它無法像 Apache 一樣通過安裝各種模塊來支持不同的頁面腳本,例如 PHP、CGI 等;Nginx 支持簡單的負載均衡和容錯;支持作為基本 HTTP 服務器的功能,例如日志、壓縮、Byte ranges、Chunked responses、SSL、虛擬主機等等,應有盡有。wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz tar zxvf pcre-7.7.tar.gz cd pcre-7.7 ./configure make make install接下來安裝 Nginx,Nginx 一般有兩個版本,分別是穩定版和開發版,您可以根據您的目的來選擇這兩個版本的其中一個,下面是把 Nginx 安裝到 /opt/nginx 目錄下的詳細步驟:wget http://sysoev.ru/nginx/nginx-0.6.31.tar.gz

tar zxvf nginx-0.6.31.tar.gz

cd nginx-0.6.31

./configure --with-http_stub_status_module –prefix=/opt/nginx

make

make install其中參數 –with-http_stub_status_module 是為了啟用 nginx 的 NginxStatus 功能,用來監控 Nginx 的當前狀態。

       安裝成功后 /opt/nginx 目錄下有四個子目錄分別是:conf、html、logs、sbin 。其中 Nginx 的配置文件存放于 conf/nginx.conf,Nginx 只有一個程序文件位于 sbin 目錄下的 nginx 文件。確保系統的 80 端口沒被其他程序占用,運行 sbin/nginx 命令來啟動 Nginx,打開瀏覽器訪問此機器的 IP,如果瀏覽器出現 Welcome to nginx! 則表示 Nginx 已經安裝并運行成功。常用的 Nginx 參數和控制程序運行參數Nginx 安裝后只有一個程序文件,本身并不提供各種管理程序,它是使用參數和系統信號機制對 Nginx 進程本身進行控制的。 Nginx 的參數包括有如下幾個:-c :使用指定的配置文件而不是 conf 目錄下的 nginx.conf 。-t:測試配置文件是否正確,在運行時需要重新加載配置的時候,此命令非常重要,用來檢測所修改的配置文件是否有語法錯誤。-v:顯示 nginx 版本號。-V:顯示 nginx 的版本號以及編譯環境信息以及編譯時的參數。例如我們要測試某個配置文件是否書寫正確,我們可以使用以下命令sbin/nginx – t – c conf/nginx2.conf通過信號對 Nginx 進行控制Nginx 支持下表中的信號:有兩種方式來通過這些信號去控制 Nginx,第一是通過 logs 目錄下的 nginx.pid 查看當前運行的 Nginx 的進程 ID,通過 kill – XXX 來控制 Nginx,其中 XXX 就是上表中列出的信號名。如果您的系統中只有一個 Nginx 進程,那您也可以通過 killall 命令來完成,例如運行 killall – s HUP nginx 來讓 Nginx 重新加載配置。配置 Nginx先來看一個實際的配置文件:user  nobody;# 工作進程的屬主

worker_processes  4;# 工作進程數,一般與 CPU 核數等同

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {    use epoll;#Linux 下性能最好的 event 模式

   worker_connections  2048;# 每個工作進程允許最大的同時連接數

} http {    include       mime.types;    default_type  application/octet-stream;    #log_format  main  '$remote_addr - $remote_user [$time_local] $request '

   #                  '"$status" $body_bytes_sent "$http_referer" '

   #                  '"$http_user_agent" "$http_x_forwarded_for"';

 

   #access_log  off;

   access_log  logs/access.log;# 日志文件名

 

   sendfile        on;    #tcp_nopush     on;

   tcp_nodelay     on;    keepalive_timeout  65;    include  gzip.conf;    # 集群中的所有后臺服務器的配置信息

   upstream tomcats { server 192.168.0.11:8080 weight=10; server 192.168.0.11:8081 weight=10; server 192.168.0.12:8080 weight=10; server 192.168.0.12:8081 weight=10; server 192.168.0.13:8080 weight=10; server 192.168.0.13:8081 weight=10;

   }    server {        listen       80;#HTTP 的端口

       server_name  localhost;        charset utf-8;        #access_log  logs/host.access.log  main;

 

location ~ ^/NginxStatus/ {    stub_status on; #Nginx 狀態監控配置

   access_log off;

} location ~ ^/(WEB-INF)/ {    deny all;

} location ~ \.(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|

zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {             root /opt/webapp;    expires 24h;

       }        location / {    proxy_pass http://tomcats;# 反向代理

   include proxy.conf;

       }        error_page 404 /html/404.html;        # redirect server error pages to the static page /50x.html

       #

error_page 502 503 /html/502.html;        error_page 500 504 /50x.html;        location = /50x.html {            root   html;

       }

   }

}Nginx 監控上面是一個實際網站的配置實例,其中灰色文字為配置說明。上述配置中,首先我們定義了一個 location ~ ^/NginxStatus/,這樣通過 http://localhost/NginxStatus/ 就可以監控到 Nginx 的運行信息,顯示的內容如下:

Active connections: 70server accepts handled requests 14553819 14553819 19239266Reading: 0 Writing: 3 Waiting: 67NginxStatus 顯示的內容意思如下:

active connections – 當前 Nginx 正處理的活動連接數。server accepts handled requests -總共處理了 14553819 個連接 , 成功創建 14553819 次握手 ( 證明中間沒有失敗的 ), 總共處理了 19239266 個請求 ( 平均每次握手處理了 1.3 個數據請求 )。reading -nginx 讀取到客戶端的 Header 信息數。writing -nginx 返回給客戶端的 Header 信息數。waiting -開啟 keep-alive 的情況下,這個值等于 active (reading + writing),意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接。靜態文件處理通過正則表達式,我們可讓 Nginx 識別出各種靜態文件,例如 images 路徑下的所有請求可以寫為:location ~ ^/images/ {    root /opt/webapp/images;

}而下面的配置則定義了幾種文件類型的請求處理方式。

location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {    root /opt/webapp;    expires 24h;

}對于例如圖片、靜態 HTML 文件、js 腳本文件和 css 樣式文件等,我們希望 Nginx 直接處理并返回給瀏覽器,這樣可以大大的加快網頁瀏覽時的速度。因此對于這類文件我們需要通過 root 指令來指定文件的存放路徑,同時因為這類文件并不常修改,通過 expires 指令來控制其在瀏覽器的緩存,以減少不必要的請求。 expires 指令可以控制 HTTP 應答中的“ Expires ”和“ Cache-Control ”的頭標(起到控制頁面緩存的作用)。

您可以使用例如以下的格式來書寫 Expires:expires 1 January, 1970, 00:00:01 GMT;expires 60s;expires 30m;expires 24h;expires 1d;expires max;expires off;動態頁面請求處理Nginx 本身并不支持現在流行的 JSP、ASP、PHP、PERL 等動態頁面,但是它可以通過反向代理將請求發送到后端的服務器,例如 Tomcat、Apache、IIS 等來完成動態頁面的請求處理。前面的配置示例中,我們首先定義了由 Nginx 直接處理的一些靜態文件請求后,其他所有的請求通過 proxy_pass 指令傳送給后端的服務器(在上述例子中是 Tomcat)。最簡單的 proxy_pass 用法如下:location / {    proxy_pass        http://localhost:8080;    proxy_set_header  X-Real-IP  $remote_addr;

}這里我們沒有使用到集群,而是將請求直接送到運行在 8080 端口的 Tomcat 服務上來完成類似 JSP 和 Servlet 的請求處理。

當頁面的訪問量非常大的時候,往往需要多個應用服務器來共同承擔動態頁面的執行操作,這時我們就需要使用集群的架構。 Nginx 通過 upstream 指令來定義一個服務器的集群,最前面那個完整的例子中我們定義了一個名為 tomcats 的集群,這個集群中包括了三臺服務器共 6 個 Tomcat 服務。而 proxy_pass 指令的寫法變成了:location / {    proxy_pass        http://tomcats;    proxy_set_header  X-Real-IP  $remote_addr;

}在 Nginx 的集群配置中,Nginx 使用最簡單的平均分配規則給集群中的每個節點分配請求。一旦某個節點失效時,或者重新起效時,Nginx 都會非常及時的處理狀態的變化,以保證不會影響到用戶的訪問。

總結盡管整個程序包只有五百多 K,但麻雀雖小、五臟俱全。 Nginx 官方提供的各種功能模塊應有盡有,結合這些模塊可以完整各種各樣的配置要求,例如:壓縮、防盜鏈、集群、FastCGI、流媒體服務器、Memcached 支持、URL 重寫等等,更關鍵的是 Nginx 擁有 Apache 和其他 HTTP 服務器無法比擬的高性能。您甚至可以在不改變原有網站的架構上,通過在前端引入 Nginx 來提升網站的訪問速度。

       以上呢就是電信通小編專門為您搜集的相關資料,希望可以幫助到您。當然作為寬帶運營商的我們肯定會一如既往地將提升寬帶品質和售后服務作為今后發展的方向。也希望大家多多給我提出寶貴的意見和建議。我們全身心的努力希望可以贏得您的每一次信賴將是我們源源不斷的動力!

(本文由北京電信通官網www.237429.live發布,如需轉載請注明轉載于北京電信通官網)


[返回北京電信通首頁] [打印] [返回上頁]
備案信息 舉報中心 安全網絡監察 文明傳播 網警110
通过电脑操作的赚钱方法 河南22选5最新预测 广东36选7开奖数据 意甲联赛积分排名 棋牌中心下载安卓版 江苏11选5前三分布图 123论坛平码平特高手 快来嘉兴麻将苹果版 吉林11选5中十万 王中王单双一波精选资料 宝博棋牌下载