一、差異對比 | |||
Apache | Nginx | ||
配置相對複雜 | 配置相對簡單 | ||
原生支持動態和靜態頁面 | 支持靜態頁面 | ||
模塊相對安全 | 高性能模塊出產迅速、社區活躍 | ||
BUG相對較少,消耗資源較多 | BUG相對較多,節省資源 | ||
對加密支持較好 | 對反向代理支持較好 | ||
同步阻塞型應用 | 異步非阻塞型應用 |
二、Nginx 的安裝
yum-yinstallgcc*
yum-yinstallpcre*zlib*
useradd -M -s /sbin/nologinnginx
解壓軟件包 nginx
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make
install
添加監控模塊
vi /usr/local/nginx/conf/nginx.conf
location /abc {
stub_status on;
}
三、 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 -m /usr/local/nginx/html/a.psd lisi
b、基於IP限制訪問
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.66.250; 允許250拒絕所有 deny 192.168.66.0/24;
}
c、虛擬主機 vi /usr/local/nginx/conf/nginx.conf
複製 server{} 區域,不同的 server 區域則是不同的虛擬主機,同 apache 擁有基於域名端口的虛擬主機
d、Nginx的反向代理功能
說明:反向代理的實現過程是,當客戶端訪問請求道 nginx 服務器是,nginx充當客戶端去真正的服務端去數據,返回給client端,這個過程稱之爲反向代理
實驗環境說明:192.168.1.3 安裝了lamp環境,192.168.1.2 安裝了 nginx 程序,實現 nginx 完全的反向代理 lamp
location / {
proxy_pass http://192.168.1.3:80;
}
e、負載調度的用法
①、在server區域外創建一個 upstream 區域,此區域中編寫的內容爲負載羣
upstreamxdl.com {
ip_hash;
#調度算法,默認 rr 輪訓,hash常用語解決session共享的問題
server 192.168.1.240:80weight 1;
server 192.168.1.241:80weight1;
server192.168.1.242:80weight 1 backup;
#backup 表示機器處於熱備狀態,weight代表權重,權重越高代表使用越多
}
②、在 / 的區域內設置反向代理
location / {
proxy_passhttp://xdl.com;
}
f、HTTPS加密訪問
①、在需要使用https加密訪問的 server{} 區域內添加一下內容開啓 SLL 加密
ssl | on; | ||
ssl_certificate | server.crt; | ||
ssl_certificate_key server.key; | |||
ssl_session_timeout | 5m; | ||
ssl_protocols | TLSv1; | ||
ssl_ciphers | HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; | ||
ssl_prefer_server_ciphers | on; |
②、將本站點的 server.pem 以及 server.key 放入 nginx 的 conf/ 目錄下
注:在實驗環境中可以用一下命令生成測試,在生產環境中必須要在https廠商註冊使用
openssl genrsa -des3 -out server.key 1024#建立服務器私鑰(過程需要輸入密碼,請記住這個密碼)生成
RSA密鑰
openssl req -new -key server.key -out server.csr#需要依次輸入國家,地區,組織,email。最重要的是有
一個common name,可以寫你的名字或者域名。如果爲了https申請,這個必須和域名吻合,否則會引發瀏覽器警報。生成的csr文件交給CA簽名後形成服務端自己的證書
cp server.key server.key.org
openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out servernew.crt#命令生成v1版證書
cp servernew.crt /usr/local/nginx/conf/server.crt
cp server.key /usr/local/nginx/conf/server.key
③、瀏覽器默認訪問的爲服務器的 80 端口即默認使用 http 協議訪問,而 https 使用的是 443 端口,所
以需要在 nginx 配置全域名跳轉功能,假設此時我們的域名是 www.xdl.com ,需要配置
server { listen 80;
server_namewww.xdl.com;
rewrite ^(.*)$ https://$host$1 permanent;
}