1. 程式人生 > >Nginx技術深度剖析(2)

Nginx技術深度剖析(2)

web服務器 nginx

Nginx虛擬主機配置實戰:

虛擬主機的概念:

所謂虛擬主機就是在Web主機裏的一個獨立的網站站點,這個站點對應獨立的域名(也可能是IP地址或端口),具有獨立的程序及資源目錄,可以獨立的對外提供服務供用戶訪問。

這個獨立的站點在配置裏是由一定格式的標簽段標記,對於Apache軟件來說,一個獨立的虛擬主機的標簽段通常包含在<VirtualHost></VirtualHost>內,而nginx軟件則使用一個server{}標簽標識一個虛擬主機。

(1)基於域名的虛擬主機

是企業中應用最廣泛的主機類型。

(2)基於IP的虛擬主機

一般不同的業務有需要使用多個IP地址的場景都會在均衡器上進行VIP上綁定,而不是Web上綁定IP區分不同的虛擬機。

(3)基於端口的虛擬主機

此類虛擬主機對應企業應用,主要為公司內部的網站提供服務。

---------------------------------------------------------------------------------------------------------------

配置基於域名的Web服務:

---------------------------------------------------------------------------------------------------------------

(1)修改配置文件:

vim /application/nginx/conf/nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80;

server_name www.smartbro.com; #設置域名

location / {

root html/www; #修改站點的目錄

index index.html index.htm;

}

}

}

:wq

(2)創建域名對應的站點目錄及內容

mkdir /application/nginx/html/www #創建站點目錄

echo ‘Welcome to www.smartbro.com!‘ > /application/nginx/html/www/index.html #追加文本到主頁文件

/application/nginx/sbin/nginx -t #檢查配置文件的語法錯誤

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

/application/nginx/sbin/nginx -s reload #平滑加載Nginx配置文件

netstat -tunlap | grep 80 #查看端口號

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 37232/nginx

ps -aux | grep nginx #查看進程

root 37232 0.0 0.1 44764 1784 ? Ss 07:47 0:00 nginx: master process /application/nginx/sbin/nginx

nginx 39418 0.0 0.1 45220 1808 ? S 14:10 0:00 nginx: worker process

root 39422 0.0 0.0 103308 852 pts/0 S+ 14:12 0:00 grep nginx

(3)修改本地hosts文件:

vim /etc/hosts

192.168.10.3 www.smartbro.com

:wq

訪問測試:

curl http://www.smartbro.com #使用瀏覽器測試

Welcome to www.smartbro.com!

修改Windows的hosts文件:

路徑:%SYSTEMROOT%\System32\drivers\etc\hosts

使用NotePad++打開編輯。

# 192.168.10.3 www.smartbro.com

在Windows命令終端測試:

C:\Users\xvGe>ping www.smartbro.com #測試域名的連通性

正在 Ping smartbro.com [104.131.163.31] 具有 32 字節的數據:

來自 104.131.163.31 的回復: 字節=32 時間=284ms TTL=51

來自 104.131.163.31 的回復: 字節=32 時間=284ms TTL=51

來自 104.131.163.31 的回復: 字節=32 時間=283ms TTL=51

來自 104.131.163.31 的回復: 字節=32 時間=284ms TTL=51

104.131.163.31 的 Ping 統計信息:

數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),

往返行程的估計時間(以毫秒為單位):

最短 = 283ms,最長 = 284ms,平均 = 283ms

------------------------------------------------------------------------------------------------------------------

配置基於多個域名的Web服務:

------------------------------------------------------------------------------------------------------------------

修改配置文件/application/nginc/conf/nginx.conf:

增加sever區塊:

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

#網站的服務器區塊

server {

listen 80;

server_name www.smartbro.com; #定義網址

location / {

root html/www; #定義網頁文件目錄

index index.html index.htm;

}

}

#論壇網站的服務器區塊

server {

listen 80;

server_name bbs.smartbro.com; #定義網址

location / {

root html/bbs; #定義網頁文件目錄

index index.html index.htm;

}

}

#網盤網站的服務器區塊

server {

listen 80;

server_name pan.smartbro.com; #定義網址

location / {

root html/pan; #定義網頁文件目錄

index index.html index.htm;

}

}


}

/application/nginx/sbin/nginx -t #檢查語法錯誤

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

/application/nginx/sbin/nginx -s reload #平滑重啟Nginx

修改本地hosts文件:

192.168.10.3 www.smartbro.com bbs.smartbro.com pan.smartbro.com

創建網站目錄和首頁文件:

mkdir /application/nginx/html/bbs

mkdir /application/nginx/html/pan

echo ‘Welcome to bbs.smartbro.com‘ > /application/nginx/html/bbs/index.html

echo ‘Welcome to pan.smartbro.com‘ > /application/nginx/html/pan/index.html

使用瀏覽器進行測試:

curl http://bbs.smartbro.com

Welcome to bbs.smartbro.com

curl http://pan.smartbro.com

Welcome to pan.smartbro.com

-----------------------------------------------------------------------------------------

配置基於端口的主機配置實戰:

-----------------------------------------------------------------------------------------

修改Nginx主配置文件:

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 80; #默認的端口號

server_name www.smartbro.com;

location / {

root html/www;

index index.html index.htm;

}

}


server {

listen 8080; #修改端口號

server_name www.smartbro.com;

location / {

root html/bbs;

index index.html index.htm;

}

}


server {

listen 8090; #修改端口號

server_name www.smartbro.com;

location / {

root html/pan;

index index.html index.htm;

}

}


}

/application/nginx/sbin/nginx -t #檢查語法配置

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

/application/nginx/sbin/nginx -s reload #平滑重啟Nginx

測試訪問:

curl http://www.smartbro.com

Welcome to www.smartbro.com!

curl http://www.smartbro.com:8080

Welcome to bbs.smartbro.com

curl http://www.smartbro.com:8090

Welcome to pan.smartbro.com

------------------------------------------------------------------------------------------------

配置基於IP的虛擬主機實戰:

------------------------------------------------------------------------------------------------

(1)在服務器增加多個網卡:

poweroff #關機

單擊[編輯虛擬機設置]--->[添加]--->[網絡適配器]--->[下一步]--->[自定義]--->[VMnet2(僅主機模式)]--->[完成]

單擊[編輯虛擬機設置]--->[添加]--->[網絡適配器]--->[下一步]--->[自定義]--->[VMnet3(僅主機模式)]--->[完成]

開啟虛擬機

現在總共有3張網卡:

eth0:192.168.10.3

eth1:192.168.20.3

eth2:192.168.30.3

rm -rf /etc/udev/rules.d/* #刪除udev規則

vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改網卡配置

DEVICE=eth0

HWADDR=00:0C:29:1C:30:C8

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.10.3

PREFIX=24

:wq #保存退出

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1 #復制並改名網卡配置文件

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth2

vim /etc/sysconfig/network-scripts/ifcfg-eth1 #修改網卡地址

DEVICE=eth1 #更改網卡的名字

HWADDR=00:0C:29:1C:30:D2 #更改網卡的MAC地址

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.20.3 #更改網卡的IP地址

PREFIX=24

:wq #保存退出

vim /etc/sysconfig/network-scripts/ifcfg-eth1 #修改網卡地址

DEVICE=eth2 #更改網卡的名字

HWADDR=00:0C:29:1C:30:DC #更改網卡的MAC地址

TYPE=Ethernet

ONBOOT=yes

BOOTPROTO=none

IPADDR=192.168.30.3 #更改網卡的IP地址

PREFIX=24

:wq #保存退出

reboot #重啟

ifconfig -a #查看所有網卡信息

eth0 Link encap:Ethernet HWaddr 00:0C:29:1C:30:C8

inet addr:192.168.10.3 Bcast:192.168.10.255 Mask:255.255.255.0 #網卡的IP地址已經生效

inet6 addr: fe80::20c:29ff:fe1c:30c8/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:51 errors:0 dropped:0 overruns:0 frame:0

TX packets:46 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:5998 (5.8 KiB) TX bytes:6909 (6.7 KiB)


eth1 Link encap:Ethernet HWaddr 00:0C:29:1C:30:D2

inet addr:192.168.20.3 Bcast:192.168.20.255 Mask:255.255.255.0 #網卡的IP地址已經生效

inet6 addr: fe80::20c:29ff:fe1c:30d2/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:3 errors:0 dropped:0 overruns:0 frame:0

TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:276 (276.0 b) TX bytes:828 (828.0 b)


eth2 Link encap:Ethernet HWaddr 00:0C:29:1C:30:DC

inet addr:192.168.30.3 Bcast:192.168.30.255 Mask:255.255.255.0 #網卡的IP地址已經生效

inet6 addr: fe80::20c:29ff:fe1c:30dc/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:3 errors:0 dropped:0 overruns:0 frame:0

TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:276 (276.0 b) TX bytes:828 (828.0 b)


lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:228 errors:0 dropped:0 overruns:0 frame:0

TX packets:228 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:14900 (14.5 KiB) TX bytes:14900 (14.5 KiB)

修改Nginx的主配置文件:

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 192.168.30.3; #設置監聽的IP地址,可以後面加上設定的端口號,例如192.168.10.3:80

server_name www.smartbro.com;

location / {

root html/www;

index index.html index.htm;

}

}


server {

listen 192.168.20.3; #設置監聽IP地址

server_name bbs.smartbro.com;

location / {

root html/bbs;

index index.html index.htm;

}

}


server {

listen 192.168.10.3; #設置監聽IP地址

server_name pan.smartbro.com;

location / {

root html/pan;

index index.html index.htm;

}

}


}

/application/nginx/sbin/nginx -t

nginx: the configuration file /application/nginx-1.13.4//conf/nginx.conf syntax is ok

nginx: configuration file /application/nginx-1.13.4//conf/nginx.conf test is successful

啟動Nginx:

/application/nginx/sbin/nginx

curl http://192.168.10.3

Welcome to pan.smartbro.com

curl http://192.168.20.3

Welcome to bbs.smartbro.com

curl http://192.168.30.3

Welcome to www.smartbro.com!

----------------------------------------------------------------------------------------

企業場景中重啟Nginx後的檢測策略:

----------------------------------------------------------------------------------------

在企業運維實戰場景中,每一個配置操作處理完畢後都應該進行快速有效的檢查。

啟動Nginx的時候會通過腳本獲取header信息或模擬用戶訪問指定的URL來自動檢查Nginx的啟動是否正常。

最大限度的保證服務重啟後可以迅速訪問網站。

如果有問題就立刻使用上一版的備份文件,使得影響用戶的時間最短。


本文出自 “帥帥的小哥哥” 博客,請務必保留此出處http://xvjunjie.blog.51cto.com/12360960/1955228

Nginx技術深度剖析(2)