一、差異對比
Apache Nginx
配置相對復雜 配置相對簡單
原生支持動態和靜態頁面 支持靜態頁面
模塊相對安全 高性能模塊出產迅速、社區活躍
BUG相對較少,消耗資源較多 BUG相對較多,節省資源
對加密支持較好 對反向代理支持較好
同步阻塞型應用 異步非阻塞型應用
運用的函數:select 運用的函數:epoll
源碼包nginx的配置文件位置/usr/local/nginx/conf/nginx.conf
二、配置文件詳解
丄指定運行的身份是誰
丄指定同時有幾個子進程運行,同時可以處理幾個任務,cpu的一個線程,就代表可以同時處理一個任務。
丄日志已經pid(進程號)
丄每個進程可以支持多少連接
丄mime.types文件中指定哪種格式的文件交給那個模塊處理(和apache一樣)
丄開啟高效文件傳輸(默認開啟有可能導致圖片顯示不出來)
丄開啟高效文件傳輸(默認開啟有可能導致圖片顯示不出來)
丄定義每個分發路徑的區域 。 端口和域名。
丄1,定義網頁分發根目錄所在位置2,定義索引文件
丄定義了報錯404時使用的頁面的位置
丄定了這些錯誤碼去哪里引用
丄如果網頁分發根目錄下有.php結尾的文件就交給本地端口9000去處理,處理完請求后交給nginx去返回請求
三、單個Nginx 的安裝
yum -y install gcc*
yum -y install pcre pcre-devel zlib zlib-devel openssl-devel openssl
useradd -M -s /sbin/nologin nginx
解壓軟件包 nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
useradd -M -s /sbin/nologin nginx
添加監控模塊
vi /usr/local/nginx/conf/nginx.conf
location /abc {
stub_status on;
}
保存退出,重啟服務。
訪問前面指定的abc目錄
丄1,當前有4個鏈接,2,第一,請求的次數,第二,響應的次數,第三,返回的請求的次數3,請求中的信息,返回的信息,正在等待的請求。
四、 Nginx實驗
1、Nginx 身份驗證
a、基於用戶名密碼
vi /usr/local/nginx/conf/nginx.conf
location /abc {#為上面的狀態統計做加密
stub_status on;#開啟
auth_basic "Welcome to nginx!";#歡迎信息
auth_basic_user_file /usr/local/nginx/html/a.psd;#信息的文件所在位置
}
htpasswd -c /usr/local/nginx/html/a.psd zhangsan#htpasswd是apache的命令,所以需要安裝apache,通過這個命令生成指定哪個用戶可以訪問。
htpasswd -m/usr/local/nginx/html/a.psd lisi
修改配置文件
保存退出,創建密碼文件htpasswd -c /usr/local/nginx/html/a.psd zhangsan
重啟nginx 。 -t檢查配置文件語法
再次訪問abc監控文件測試
輸入zhangsan密碼123登陸
b、基於IP限制訪問
實驗環境nginx服務器64,客戶端76
vi /usr/local/nginx/conf/nginx.conf
location /abc {
stub_status on;
auth_basic "Welcome to nginx!";
auth_basic_user_file /usr/local/nginx/html/a.psd;
allow 192.168.116.64;
deny 192.168.116.0/24; 允許64拒絕116網段,拒絕所有 0.0.0.0
}
更改后如下
;保存退出重啟服務。
64訪問。
其他人訪問。
c、虛擬主機
實驗環境:64服務器,73客戶端
vi /usr/local/nginx/conf/nginx.conf
復制 server{} 區域,不同的 server區域則是不同的虛擬主機,同 apache 擁有基於域名端口的虛擬
主機
刪掉配置文件里server區的模板和注釋后復制server區
基於端口不同。修改兩者的不同,端口和家目錄
創建目錄,和網頁文件
重啟服務
訪問80端口
訪問8080端口
基於域名不同。端口相同修改域名。
在客戶端映射文件中寫入ip域名對應關系。
分別訪問測試
d、Nginx的反向代理功能
說明:反向代理的實現過程是,當客戶端訪問請求道 nginx 服務器是,nginx充當客戶端去真正的服務端去
數據,返回給client端,這個過程稱之為反向代理
實驗環境說明:192.168.116.73安裝了lamp環境,192.168.116.64安裝了 nginx 程序,實現 nginx 完全的反
向代理 lamp
73,啟動apache服務,到網頁分發目錄下創建index.html文件寫入test用於測試
64,修改nginx的配置文件
修改server區的location區刪除路徑和格式兩行,添加proxy_pass http://192.168.116.73:80;
②、在 / 的區域內設置反向代理
location / {
proxy_pass http://dudu.com
}
保存,重啟服務
訪問,反向代理nginx服務器
e、負載調度的用法
upstream:可以進行一些簡單的負載 應用層可以跨平台。
rr輪詢機制算法。收到的請求在每個服務器之間切換。
hash,某個ip斷開后下次仍然可以訪問用一個服務器。
實驗環境:64nginx反向代理服務器 ,73,和75,做apache服務器或lamp
①、在server區域外創建一個 upstream 區域,此區域中編寫的內容為負載群
upstream dudu.com {
ip_hash; #指定算法
#調度算法,默認 rr 輪訓,hash常用語解決session共享的問題
server 192.168.116.73:80 weight 1; #指定后端服務器server 192.168.116.75:80 weight 1;
server 192.168.116.xx:80 weight 1 backup;
#backup 表示機器處於熱備狀態,weight代表權重(可以不寫),權重越高代表使用越多
}
退出,重啟服務
用76客戶端訪問測試
刷新
使用hash算法
重啟服務
測試
刷新不變