Nginx——強大的web
Nginx(發音同 engine x)是一款輕量級的web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler(俄文:Рамблер)使用。其特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好.中國大陸使用nginx網站用戶有:新浪、網易、 騰訊等。
在安裝之前我們需要兩個庫。Pcre和libevent
pcre
(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正規表達式庫.這些在執行正規表達式模式匹配時用與Perl 5同樣的語法和語義是很有用的。 Boost太龐大了,使用boost regex後,程序的編譯速度明顯變慢。測試了一下,同樣一個程序,使用boost::regex編譯時需要3秒,而使用pcre不到1秒。因此改用pcre來解決C語言中使用正則表達式的問題。
libevent
是一個強大的跨平臺的事件通知庫,如果不想被多線程困擾,可以考慮這個平臺,它從1.2.* 版本開始支持輕量級的http server 開發支持,隨後陸續還推出輕量級 DNS server、RPC server 開發支持,這組事件API提供了一種當某個指定文件描述符有效或時間到達時執行某個函數的機制.在使用事件API前必須使用event_init()初始化.
上傳我們需要的兩個文件
1.安裝libevent庫
拆解文件
安裝庫並指明安裝路徑
Make && make install
處理庫文件
[root@host libevent]# vim /etc/ld.so.conf.d/libevent.conf
刷新一下內存,再查找一下
處理頭文件
下面安裝pcre
查看一下關於pcre庫的安裝
我們還需要安裝pcre-devel-6.6-2.el5_1.7.i386.rpm
創建組合用戶
安裝nginx
1、拆包
2、安裝
執行文件
/usr/local/nginx/sbin/nginx
3、看一下nginx的配置文件 /etc/nginx/nginx.conf
4、下面我們啓動一下nginx試試
發現缺少目錄,那我們創建之後,在啓動一下。
改變一下環境變量,有利於我們以後很好的啓動和控制nginx
5、訪問以下我們的站點目錄
*******************************************************************************
*******************************************************************************
加密訪問
第一步: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)
第二步:建立Nginx的安全目錄,並生成相關的私鑰和證書文件.
mkdir -pv /usr/local/nginx/certs
cd /usr/local/nginx/certs
生成私鑰文件(nginx.key),並修改權限.
chmod 600 nginx.key
提取剛纔生成的私鑰文件,生成請求證書文件(nginx.csr)
將請求證書文件提交給證書頒發機構CA,生成證書文件(nginx.crt).
第三步:編輯配置文件,將我們的站點(www.zzdx.com)配置加密訪問.
vim /etc/nginx/nginx.conf(修改完配置文件記得重啓服務)
第四步:加密訪問測試.(爲了方便測試:修改主機的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信息了.