1. 程式人生 > >Nginx部署虛擬主機(不同域名、不同端口、不同IP地址)

Nginx部署虛擬主機(不同域名、不同端口、不同IP地址)

mar 互聯 login 網站 支持 一個 http useradd log

介紹

Nginx是一款輕量級的HTTP服務器軟件,由俄羅斯的Igor Sysoev開發。它能夠支持高達50000個並發連接數的響應,擁有強大的靜態資源處理能力,運行穩定,並且系統資源消耗非常低,現已逐漸被越來越多的用戶認可,目前很多大型網站都應用Nginx服務器作為後端網站程序的反向代理及負載均衡器,來提升整個站點的負載並發能力。

系統環境:

  • rhel 6.5 操作系統
  • 服務器IP地址:192.168.100.5
  • 客戶機IP地址:192.168.100.30(與服務器同網段並能夠互聯互通)
  • Nginx-1.6.0.tar.gz 百度下載 密碼:gz86
  • rhel6.5的鏡像光盤掛載至/mnt/cdrom/

實現目標:

  1. 安裝Nginx服務器
  2. 基於不同域名
  3. 基於不同端口
  4. 基於不同IP地址

開始部署

一. 安裝Nginx服務器

1.安裝依賴包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

2.新建nginx管理用戶

useradd -M -s /sbin/nologin nginx

3.解壓

tar xzvf nginx-1.6.0.tar.gz -C /opt

4.配置

cd /opt/nginx-1.6.0/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module #開啟stub_status狀態統計模塊

5.編譯及安裝

make && make install

6.建立nginx鏈接,便於系統管理

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

########### nginx管理命令 ###########

nginx -t #nginx配置文件檢查
nginx #啟動
killall -1 nginx #重啟nginx
killall -3 nginx #停止nginx

######################################

7.生成nginx管理腳本

vi /etc/init.d/nginx

#!/bin/bash
#chkconfig: - 99 20
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0

8.nginx賦予執行權限

chmod +x /etc/init.d/nginx

9.nginx加入系統服務管理

chkconfig --add nginx

10.啟動nginx

service nginx start

11.測試

技術分享圖片


二. 基於不同域名

1. 安裝bind軟件包

rpm -ivh /mnt/cdrom/Packages/bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

2. 修改主配置文件

vim /etc/named.conf

技術分享圖片

3. 修改區域配置文件

vim /etc/named.rfc1912.zones

zone "aa.com" IN {
type master;
file "aa.com.zone";
allow-update { none; };
};
zone "bb.com" IN {
type master;
file "bb.com.zone";
allow-update { none; };

技術分享圖片

4. 編輯數據配置文件,從/var/named目錄中復制一份正向解析模板文件(named.localhost),在復制時加上-p參數,保留原始文件的權限等信息

[root@localhost named]# cd /var/named
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost aa.com.zone

5. 把域名和IP地址的對應數據填寫數據配置文件中並保存

vim aa.com.zone

$TTL 1D //生存周期為1天
@ IN SOA @ admin. (
0 ; serial //更新序列號
1D ; refresh //更新時間
1H ; retry //重試延時
1W ; expire //失效時間
3H ) ; minimum //無效解析記錄的緩存時間
NS @ // 域名服務器記錄
A 192.168.100.5 // 地址記錄
www IN A 192.168.100.5

#因為兩個域名都是解析到同一個IP地址,所以配置同aa.com,直接復制
[root@localhost named]# cp -p aa.com.zone bb.com.zone

技術分享圖片

6. 開啟named服務並重啟使其生效

chkconfig named on
service named restart

7. 檢驗解析結果

註意:需要先將網卡中的DNS地址參數修改為本機IP地址(192.168.100.5),這樣子才可以正常使用本機提供的DNS服務。
這裏我們通過nslookup命令檢查能否從DNS服務器中查詢到域名與IP地址的解析記錄,進而確定檢測DNS服務器是否已經正常為用戶提供服務。

技術分享圖片


8. 創建兩個網站站點的目錄及測試首頁文件

[root@Server html]# mkdir /var/www/html/aa.com
[root@Server html]# mkdir /var/www/html/bb.com
[root@Server html]# echo "<h1> Hi,www.aa.com</h1>" > /var/www/html/aa.com/index.html
[root@Server html]# echo "<h1> Hi,www.bb.com</h1>" > /var/www/html/bb.com/index.html

9. 修改nginx.conf配置文件

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

server {
listen 80;
server_name www.aa.com;
location / {
root /var/www/html/aa.com;
index index.html index.php;
}
}
server {
listen 80;
server_name www.bb.com;
location / {
root /var/www/html/bb.com;
index index.html index.php;
}
}

10. 重啟nginx服務

service nginx restart

11. 測試

技術分享圖片

技術分享圖片

三. 基於不同端口

1. 修改nginx.conf配置文件

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

server {
listen 6666;
server_name www.aa.com;
location / {
root /var/www/html/aa.com;
index index.html index.php;
}
}
server {
listen 8888;
server_name www.bb.com;
location / {
root /var/www/html/bb.com;
index index.html index.php;
}
}

2. 重啟nginx服務

service nginx restart

3. 測試

技術分享圖片

技術分享圖片

四. 基於不同IP地址

1. 這裏使用虛擬IP方式獲得多個IP地址

ifconfig eth0:0 192.168.100.6 netmask 255.255.255.0 up

[root@Server ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:8a:85:fc brd ff:ff:ff:ff:ff:ff
inet 192.168.100.5/24 brd 192.168.100.255 scope global eth0
inet 192.168.100.6/24 brd 192.168.100.255 scope global secondary eth0:1
inet6 fe80::20c:29ff:fe8a:85fc/64 scope link
valid_lft forever preferred_lft forever
[root@Server ~]#

技術分享圖片

2. 修改nginx.conf配置文件

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

server {
listen 192.168.100.5:80;
server_name www.aa.com;
location / {
root /var/www/html/aa.com;
index index.html index.php;
}
}
server {
listen 192.168.100.6:80;
server_name www.bb.com;
location / {
root /var/www/html/bb.com;
index index.html index.php;
}
}

3. 重啟nginx服務

service nginx restart

4. 測試

技術分享圖片

技術分享圖片

Nginx部署虛擬主機(不同域名、不同端口、不同IP地址)