Nginx服務器的搭建

要點:
安裝nginx,升級
用戶認證auth_basic_user_file
虛擬主機:server{name a} server{name b}
虛擬主機:server{listen 443;私鑰,公鑰}
反向代理:upstream abc {server;server}
proxy_pass http://abc

案例1:搭建Nginx服務器
在IP地址爲192.168.4.5的主機上安裝部署Nginx服務
Proxy
步驟一:構建Nginx服務器
方法1:腳本安裝構建Nginx服務器
cd lnmp_soft
./install_lnmp.sh
選1
安裝Nginx

方法2:使用源碼包安裝nginx軟件包
[root@svr5 ~]# yum –y install gcc pcre-devel openssl-devel //安裝常見依賴包
[root@svr5 ~]# useradd –s /sbin/nologin nginx
[root@svr5 ~]# tar -xf nginx-1.8.0.tar.gz
[root@svr5 ~]# cd nginx-1.8.0
[root@svr5 nginx-1.8.0]# ./configure \

--prefix=/usr/local/nginx \ //指定安裝路徑
--user=nginx \ //指定用戶
--group=nginx \ //指定組
--with-http_ssl_module //開啓SSL加密功能

nginx命令安裝構建Nginx服務器

/usr/local/nginx/sbin/nginx //啓動服務

/usr/local/nginx/sbin/nginx -s stop //關閉服務

/usr/local/nginx/sbin/nginx -s reload //重新加載配置文件

/usr/local/nginx/sbin/nginx –V //查看軟件信息

/usr/local/nginx/sbin/nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 端口被佔用
netstat -tulnp | grep 80
killall
/usr/local/nginx/sbin/nginx

基於域名,基於IP,基於端口
vim /usr/local/nginx/conf/nginx.conf
http {
server {
listen 80; //端口
server_name www.aa.com; //域名
root html;
}
server {
listen 80; (192.168.4.5:8000) //端口
server_name www.bb.com; //域名
root www;
}

mkdir /usr/local/nginx/www
echo "www" > index.html

案例2:用戶認證
2.1 問題

沿用練習一,通過調整Nginx服務端配置,實現以下目標:
訪問Web頁面需要進行用戶認證
用戶名爲:tom,密碼爲:123456
2.2 方案

通過Nginx實現Web頁面的認證,需要修改Nginx配置文件,在配置文件中添加auth語句實現用戶認證。最後使用htpasswd命令創建用戶及密碼即可。
2.3 步驟

實現此案例需要按照如下步驟進行。
步驟一:修改Nginx配置文件

1)修改/usr/local/nginx/conf/nginx.conf
[root@pc205 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
auth_basic "Input Password:"; //認證提示符
auth_basic_user_file "/usr/local/nginx/pass"; //認證密碼文件
location / {
root html;
index index.html index.htm;
}
}
2)生成密碼文件,創建用戶及密碼
使用htpasswd命令創建賬戶文件,需要確保系統中已經安裝了httpd-tools。
[root@svr5 ~]# yum -y install httpd-tools
[root@svr5 ~]# htpasswd -cm /usr/local/nginx/pass tom //創建密碼文件
New password:
Re-type new password:
Adding password for user tom
[root@svr5 ~]# htpasswd -m /usr/local/nginx/pass jerry
//追加用戶,不使用-c選項
New password:
Re-type new password:
Adding password for user jerry
3)重啓Nginx服務
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –s reload
//請先確保nginx是啓動狀態纔可以執行命令成功,否則報錯
步驟二:客戶端測試

1)登錄192.168.4.100客戶端主機進行測試
[root@client ~]# firefox http://192.168.4.5 //輸入密碼後可以訪問
案例3:基於域名的虛擬主機
3.1 問題

沿用練習二,配置基於域名的虛擬主機,實現以下目標:
實現兩個基於域名的虛擬主機,域名分別爲www.aa.com和www.bb.com
對域名爲www.aa.com的站點進行用戶認證,用戶名稱爲tom,密碼爲123456
3.2 方案

修改Nginx配置文件,添加server容器實現虛擬主機功能;對於需要進行用戶認證的虛擬主機添加auth認證語句。
3.3 步驟

實現此案例需要按照如下步驟進行。
步驟一:修改配置文件

1)修改Nginx服務配置,添加相關虛擬主機配置如下
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80; //端口
server_name www.aa.com; //域名
auth_basic "Input Password:"; //認證提示符
auth_basic_user_file "/usr/local/nginx/pass"; //認證密碼文件
location / {
root html; //指定網站根路徑
index index.html index.htm;
}

}
… …
server {
listen 80; //端口
server_name www.bb.com; //域名
location / {
root www; //指定網站根路徑
index index.html index.htm;
}
}
2)創建賬戶及密碼
[root@svr5 ~]# htpasswd –cm /usr/local/nginx/pass tom //創建賬戶密碼文件
New password:
Re-type new password:
Adding password for user tom
3)創建網站根目錄及對應首頁文件
[root@svr5 ~]# mkdir /usr/local/nginx/www
[root@svr5 ~]# echo "www" > /usr/local/nginx/www/index.html
4)重啓nginx服務
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –s reload
步驟二:客戶端測試

1)修改客戶端主機192.168.4.100的/etc/hosts文件,進行域名解析
[root@client ~]# vim /etc/hosts
192.168.4.5 www.aa.com www.bb.com
2)登錄192.168.4.100客戶端主機進行測試
注意:SSH –X遠程連接調用虛擬機的firefox時,請先關閉真實機的firefox。
[root@client ~]# firefox http://www.aa.com //輸入密碼後可以訪問
[root@client ~]# firefox http://www.bb.com //直接訪問

對稱密鑰:單擊加密 AES,DES
非對稱密施:網絡加密 RSA,DSA
信息摘要:數據安全 md5 sha128 sha256

案例4:SSL虛擬主機
步驟一:配置SSL虛擬主機
1)生成私鑰與證書

cd /usr/local/nginx/conf

openssl genrsa > cert.key //生成私鑰,用來解密

openssl req -new -x509 -key cert.key -out cert.pem //生成證書(公鑰),用來加密
2)修改Nginx配置文件,設置加密網站的虛擬主機

vim /usr/local/nginx/conf/nginx.conf

99行Ctrl+v去掉前面的#符號
步驟二:客戶端驗證
1)修改客戶端主機192.168.4.100的/etc/hosts文件,進行域名解析
[root@client ~]# vim /etc/hosts
192.168.4.5 www.cc.com www.aa.com www.bb.com
2)登錄192.168.4.100客戶端主機進行測試
[root@client ~]# firefox https://www.cc.com //信任證書後可以訪問

案例5:Nginx反向代理
使用4臺RHEL7虛擬機,其中一臺作爲Nginx代理服務器,該服務器需要配置兩塊網卡,IP地址分別爲192.168.4.5和192.168.2.5,兩臺Web服務器IP地址分別爲192.168.2.100和192.168.2.200。客戶端測試主機IP地址爲192.168.4.100。
步驟一:部署實施後端Web服務器

1)部署後端Web1服務器
後端Web服務器可以簡單使用yum方式安裝httpd實現Web服務,爲了可以看出後端服務器的不同,可以將兩臺後端服務器的首頁文檔內容設置爲不同的內容。
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.2.100" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
2)部署後端Web2服務器
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.2.200" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd
步驟二:配置Nginx服務器,添加服務器池,實現反向代理功能

1)修改/usr/local/nginx/conf/nginx.conf配置文件
[root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
upstream webserver {
server 192.168.2.100 weight=1 max_fails=2 fail_timeout=10; #weight爲輪詢次數,默認爲1,修給爲2後,即訪問代理2.100出現2次,2.200出現1次,輪詢交替。max_fails爲失敗幾次算該web出現故障。fail_timeout爲失敗後再次查詢時間
server 192.168.2.200 weight=2 max_fails=2 fail_timeout=10;
}
.. ..
server {
listen 80;
server_name www.tarena.com;
location / {
proxy_pass http://webserver;
}
}
2)重啓nginx服務
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –s reload
3)使用瀏覽器訪問代理服務器測試輪詢效果
[root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問查看效果

4)設置相同客戶端訪問相同Web服務器
vim /usr/local/nginx/conf/nginx.conf
upstream webserver {
ip_hash #相同客戶端訪問相同的服務器
server 192.168.2.100

5)重啓nginx服務
[root@svr5 ~]# /usr/local/nginx/sbin/nginx –s reload
6)使用瀏覽器訪問代理服務器測試輪詢效果
[root@client ~]# curl http://192.168.4.5 //使用該命令多次訪問查看效果

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