Nginx反向代理負載均衡配置實戰

   本次實驗爲Nginx作這反向代理服務器.將客戶端請求轉發到後端的web服務器上(apache).nginx和DNS安裝在一臺服務器上.

一.實現環境

wKioL1MK0BHSSPepAADpwHzAvF8191.jpg


說明;

   nginx+DNS服務器模擬公網地址 兩個域名同時指向這個IP,通過nginx代理將實際請求轉發到後端真實服務器上

   www.haidongqing.com  192.168.137.106

   mail.haidongqing.com    192.168.137.106

二.所需軟件及版本

bind-9.3.6

nginx-1.4.5.tar.gz //wget http://nginx.org/download/nginx-1.4.5.tar.gz

三.安裝配置DNS

yum -y install bind

yum -y install caching-nameserver

檢查安裝後的目錄

ls /var/named

手動創建named置文件

vim /etc/named.conf

wKioL1MKz1OSVBsMAAHK8h3_UmY063.jpg


手動編輯正反區域配置文件

vim /var/named/haidongqing.com.zone  192.168.137.zone

wKiom1MLJerhDiazAAEqKbing1o521.jpg

wKioL1MLJcSxCyurAAEWfXXrjEE508.jpg


測試配置文件語法和區域配置文件語法

named-checkconf

named-checkzone "haidongqing.com" haidongqing.con.zone

無報錯即可以重啓DNS

service named restart

netstat -ntlp //檢查端口及進程名

wKiom1MK0LaD5_QnAALZs-qQ9Nk300.jpg

測試DNS正解

dig -t A mail.haidongqing.com



三.安裝配置Nginx

yum -y install pcre-devel

tar -zxvf nginx-1.4.5.tar.gz

cd nginx-1.4.5

./configure \

 --prefix=/usr/local/nginx \

 --sbin-path=/usr/local/nginx/sbin/nginx \

 --error-log-path=/var/log/nginx/error.log \

 --http-log-path=/var/log/nginx/access.log \

 --pid-path=/var/run/nginx/nginx.pid  \

 --lock-path=/var/lock/nginx.lock \

 --user=nginx \

 --group=nginx \

 --with-pcre

 make && make install

安裝好之後無需改動配置文件可以直接啓動nginx

這裏寫一個腳本方便起動nginx  .


#!/bin/sh

function_start_nginx()

{

       printf "starting nginx...\n"

       /usr/local/nginx/sbin/nginx 2>&1

}


function_stop_nginx()

{

       printf "stopping nginx...\n"

       kill -9 `ps -ef |grep nginx | grep -v grep | awk '{print $2}'` 2>&1

}


function_restart_nginx()

{

       printf "restart nginx...\n"

       kill -9 `ps -ef |grep nginx | grep -v grep | awk '{print $2}'` 2>&1

       /usr/local/nginx/sbin/nginx 2>&1

}


function_hupstart_nginx()

{

       printf "huprestarting nginx...\n"

       kill -HUP `cat /usr/local/nginx/logs/nginx.pid` 2>&1

}


case $1 in

       start)

               function_start_nginx

               ;;

       stop)

               function_stop_nginx

               ;;

       restart)

               function_restart_nginx

               ;;

       hup)

               function_hupstart_nginx

               ;;

       *)

               printf "Usage:$0{start|stop|restar|hup} \n"

esac


檢查端口及服務

wKioL1MK-rvQJYSnAAQgSCkkwWM963.jpg

測試web接口

wKiom1MK-vTQrgjtAAF8K8SN6-E851.jpg

注:以上nginx 安裝完成


四.配置nginx反向代理負載均衡

備份主配置文件 手動編輯新配置文件

cd /usr/local/nginx/conf

mv nginx.conf nginx.conf.bak


user  nginx nginx;


worker_processes 10;


events

{

     use epoll;


     worker_connections 51200;

}


http

{

     include       mime.types;

     default_type  application/octet-stream;


     keepalive_timeout 120;


     tcp_nodelay on;


     upstream  www.haidongqing.com  {

             server   192.168.137.136:80;

             server   192.168.137.137:80;

     }


     upstream  mail.haidongqing.com  {

             server   192.168.137.100:80;

             server   192.168.137.101:80;

     }


     server

     {

             listen  80;

             server_name  www.haidongqing.com;


             location / {

                      proxy_pass        http://www.haidongqing.com;

                      proxy_set_header   Host             $host;

                      proxy_set_header   X-Real-IP        $remote_addr;

                      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

             }

     }


               log_format www_haidongqing_com  '$remote_addr - $remote_user [$time_local] "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';


             access_log  logs/www.log  www_haidongqing_com;


     server

     {

             listen  80;

             server_name  mail.haidongqing.com;


             location / {

                      proxy_pass        http://mail.haidongqing.com;

                      proxy_set_header   Host             $host;

                      proxy_set_header   X-Real-IP        $remote_addr;

                      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

             }


     }

               log_format  mail_haidongqing_com  '$remote_addr - $remote_user [$time_local] "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';


            access_log  logs/mail.log  mail_haidongqing_com;

}

               

mail.haidongqing.com 的請求將轉發到100 和101兩臺服務器上

www.haidongqing.com 的請求將轉發到136和137兩臺服務器上



配置完成 檢查語法即可重啓nginx

./usr/local/nginx/sbin/nginx -t

./usr/local/nginx/sbin/sng restart

注:以上日誌配置必須寫在server之外.否則啓動時會出來告警提示.


訪問測試

將客戶端DNS改爲nginx+dns服務器地址,配置各realServer的dns指向及web服務器配置

以下截圖爲測試結果,刷新一次頁面將會變化一次.如果是生產環境.所顯示的內容應該是完全相同的

wKioL1MLKcbwNCX2AAEPBlWKwBw394.jpg

wKioL1MLKcaQG6ExAAE7Pn51-EQ189.jpg

wKiom1MLKezS2q75AAEFchipU1c080.jpg

wKioL1MLKcfQDp8wAAEmiqVKEBk453.jpg


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