Nginx:強勁的Web引擎

     Nginx是一款輕量級的Web服務器(反向代理服務器)及電子郵件代理服務器。由俄羅斯所開發,供其大型的入口網站及搜索引擎Rambler使用。其特點是內存佔用很少,併發能力很強.Nginx的出現不是很早,但它的發展速度卻是驚人的,嫣然已經成爲世界門戶網站考慮的對象。中國大陸我們比較熟悉的有:新浪、網易、騰訊、小米、淘寶等等。下面是Nginx的世界佔有率排名:

下面我們通過一些小的測試來簡單瞭解一下Nginx的強大。

【準備工作】

①Nginx的官網下載最新的源碼:nginx-1.3.16.tar.gz

②Libeventd官網下載最新源碼:libevent-2.0.18-stable.tar.gz

說明:nginx採用Epoll【事件通知】機制,需要libevent庫的支持,在Red Hat的光盤上是有的,不過版本很低。

③Pcre:一個Perl庫,包括perl兼容的正規表達式庫,也是需要的。

在Red Hat的光盤上是有的,而且默認已經裝過了,但還需要它的一個devel包pcre-devel-6.6-2.e15_1.7(不裝編譯會出錯的).

④Apache:安裝Red Hat光盤自帶(爲了用它帶的壓力測試工具ab)

一:源碼安裝Nginx

①創建Nginx服務的nologin系統賬號

  groupadd  -r nginx

  useradd -r  -g  nginx  -M  nginx

② 解壓縮源碼.

  tar  zxvf  nginx-1.3.16.tar.gz  -C /usr/local/src/

  cd  /usr/local/src/nginx-1.3.16

③源碼安裝.

   ./configure \

  --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_flv_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/ \

  --with-pcre

  make  &&  make install 

二:Nginx&Apache的壓力測試比較分析

拷貝nginx的主頁文件到apache的主目錄下(用於壓力測試公平性)

cp   /usr/local/nginx/html/index.html  /var/www/html

啓動Apache服務,進行壓力測試.

service  httpd  start

停掉Apache服務,啓動Nginx進行壓力測試.

注意:啓動Nginx前要先建一個client訪問時的臨時目錄.

mkdir  -pv  /var/tmp/nginx/client/

啓動nginx服務.

/usr/local/nginx/sbin/nginx

測試結果顯而易見了。。。。。。。。

三:Nginx的一些基礎應用

【基於ip地址的虛擬主機】(vim /etc/nginx/nginx.conf)

 添加兩塊網卡:eth0 192.168.145.100  

             eth0:0 192.168.145.101

server {

        listen       192.168.145.100:80;

        server_name  localhost;

        location / {

            root   html;

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/error.log;

        access_log /var/log/nginx/access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

server {

        listen       192.168.145.101:80;

        server_name  localhost;

        location / {

            root   /tec;

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/tec_error.log;

        access_log /var/log/nginx/tec_access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

【基於主機頭的虛擬主機】(vim /etc/nginx/nginx.conf)

server {

        listen       192.168.145.100:80;

        server_name  www.wpp.com;

        location / {

            root   html;

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/error.log;

        access_log /var/log/nginx/access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

}

server {

        listen       192.168.145.100:80;

        server_name  tec.wpp.com;

        location / {

            root   /tec;(這個目錄要自己建立,目錄下放置主頁html文件

            index  index.html index.htm;

        }

        error_log  /var/log/nginx/tec_error.log;

        access_log /var/log/nginx/tec_access.log;

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

加密訪問】

Step1:建立證書頒發機構CA

vim /etc/pki/tls/openssl.cnf 

②創建CA需要的需要的3個目錄(certs、newcerts、crl)和2個文件(index.txt、serial)

cd /etc/pki/CA/ 

mkdir  certs newcerts crl  

touch index.txt  serial

echo 01 >serial(給serial一個初始序號)  

③生成CA自己的私鑰文件,並修改權限,放到自己的私鑰存放目錄(private/)

CA給自己頒發證書.(生成證書文件cacert.pem)

Step2:建立Nginx的安全目錄,並生成相關的私鑰和證書文件.

mkdir -pv /usr/local/nginx/certs

  cd   /usr/local/nginx/certs

②生成私鑰文件(nginx.key),並修改權限.

chmod  600  nginx.key

③提取剛纔生成的私鑰文件,生成請求證書文件(nginx.csr).

④將請求證書文件提交給證書頒發機構CA,生成證書文件(nginx.crt).

Step3:編輯配置文件,將我們的站點(www.zzdx.com)配置加密訪問.

vim  /etc/nginx/nginx.conf(修改完配置文件記得重啓服務)

Step4:加密訪問測試.(爲了方便測試:修改主機的Hosts文件)

Hosts路徑(C:\Windows\System32\drivers\etc\HOSTS)

在瀏覽器的地址欄內輸入 (https://www.zzdx.com),測試.

會提示找不到證書的頒發機構CA,那麼我們該感到奇怪了,我們明明建立了CA了啊,而且也有了CA頒發的證書了啊,那爲什麼會沒有呢?

怎麼解決這個問題呢?

在Apache上把SSL被做成了它的一種模塊,用於調用,而且有證書鏈的感念,所以可以通過證書鏈找到證書頒發機構。但是這些在Nginx上沒有,但還是有解決辦法的,下面就是一種好的解決方法:

既然沒有找到CA的鏈,那我們自己創建一個他們的鏈不就行了!

cd  /usr/loacl/nginx/certs/ 

cp  /etc/pki/CA/cacert.pem ./

cat cacert.pem >>nginx.crt(將CA的私鑰文件內容從定向到nginx的後面)

清空瀏覽器的緩存信息,

在瀏覽器的地址欄內輸入 (https://www.zzdx.com),再次測試.

會提示當前證書是由不信任的CA所頒發的,但是也能強制訪問的.

下面來解決一下不信任的問題:

在瀏覽器的證書管理裏面已經可以查詢到我們的CA信息了.

清空一下瀏覽器緩存信息,再次測試,這一次就可以正常訪問了。。。。。。。

是不是很好玩呢?有興趣的朋友也可以自己試一試哦!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章