Nginx服務器的搭建

<--目錄-->

1)Nginx理論

2)Nginx搭建


【Nginx理論】

Nginx技能要點

Nginx安裝與配置

Nginx虛擬主機

Nginx反向代理



一、nginx簡介(能夠提供網站服務 和 代理服務 開源軟件)

Nginx是俄羅斯人編寫的十分輕量級的HTTP服務器


是一個高性能的HTTP和反向代理服務器,同時也是一個

IMAP/POP3/SMTP代理服務器



網站服務器類型 

Apache Nginx tomcat(java語言編寫)


nginx 默認地址重寫(修改用戶訪問的url)


conf配置文件   nginx.conf 主配置文件

html網頁目錄 

logs日誌文件

sbin服務啓動腳本


絕對路徑啓動服務

/usr/local/nginx/sbin/naginx  //直接啓動服務,不做任何配置

相對路徑啓動服務

./nginx //直接啓動服務,不做任何配置


啓動服務

./nginx [選項]

例 ./nginx -t

-t  //測試主配置文件有沒有錯誤

-v  //查看nginx軟件的版本

-V  //查看安裝時候的配置信息

-c  //啓動服務時使用哪一個配置文件   [nginx.conf nginx2.conf]

-h  //查看幫助信息

-s  //關閉服務   #./nginx -s stop



sbin/nginx -c conf/nginx2.conf  //-c後面加上要啓動的配置文件名,不加-c默認啓動nginx.conf

nginx.conf  nginx2.conf


停止nginx服務 (信號不區分大小寫)

格式  :  pkill/kill    -信號    進程名/pid號

例子  :  pkill     -int     nginx

信號

TERM,  INT    快速關閉

QUIT從容關閉,關閉主進程順便關閉工作子進程

HUP 重載配置用新的配置開始新工作進程從容關閉舊的工作進程

USR1重新打開日誌文件

USR2平滑升級可執行程序

WINCH從容關閉工作進程,不會立即關閉子進程

  


配置說明

安裝目錄/conf/nginx.conf

全局配置:寫在容器外,對所有容器生效

局部配置:寫在容器內,只對當前容器有效

全局配置和局部配置同時配置時,局部配置生效



Nginx反向代理服務方式

1、輪詢(默認的)每個按請求按時間順序逐一分配到不同的後端服務器 如果後斷服務器down掉能自動剔除


2、Weight 指定輪詢機率 權重和訪問比率成正比 通常用於後斷服務器性能不同的情況默認值爲1

Weight=3 weight=2


3、ip_hash 每個請求,按訪問ip地址的hash結果分配 這樣可以讓每個訪客固定訪問一個後端服務器,可

  以解決session的問題


4、Fair 按後端服務器的響應時間來分配請求 響應時間短的優先分配(裝第三方軟件纔可以使用)



後端服務器組主機設置詳細信息

down表示當前的server暫時不參與負載 


backup 其他所有的非backup機器down或者忙的時候 請求會發給backup機器,

       所以這臺機器壓力會最輕


max_fails 允許請求失敗的次數 默認爲1 當超過最大次數時 返回proxy_next_upstream模塊

          定義的錯誤


fail_timeout  max_fails次失敗後 暫停提供服務的時間 



修改主配置文件

vi /usr/lcoal/nginx/conf/nginx.conf

http {

upstream服務器組名{

   server真正提供服務的服務器的ip地址:端口號;

   server 真正提供服務的服務器的ip地址:端口號;

}

server{

  ...

location / {

  ...

proxy_pass http://服務器組名;//允許整個組被輪詢訪問

proxy_pass http://ip:80;//設置單獨一個IP被訪問

}

}

}


配置主配置文件,默認輪詢方式

#cd /usr/lcoal/nginx/conf

vi nginx.conf

http {

upstream webgrp {

server192.168.1.10:80;

server  192.168.1.100:80;

}

server{

 ...

  location / {

 ...

    proxy_pass http://webgrp;    //允許整個組被輪詢訪問

#proxy_pass http://192.168.1.10:80;   //設置單獨一個IP被訪問

  }

}


}


權重方式配置

#vi nginx.conf

http{

upstream webgrp {

server 192.168.1.10:80 weight=2;//5次訪問2次

server 192.168.1.100:80 weight=3;//5次訪問3次

}

...

}


ip_hash方式配置

http{

upstream webgrp{

ip_hash;//每個訪問客固定訪問一個後端服務器

server 192.168.1.10;

server 192.168.1.100;

...

}

}


上述三種配置方式需分開使用

#cd ..;cd sbin

#pkill -hup nginx

公網客戶端測試

#elinks --dump http://1.1.1.254


後端服務器組設置

http{

upstream webgrp {

server 192.168.1.1:80 weight=2;

server 192.168.1.10:80 down;  //設置爲down狀態,服務器請求不會發到這臺主機

server 192.168.1.100:80 max_fails=2 fail_timeout=30; //請示最大失敗次數2次,30秒內不再提供服務

server 192.168.1.101:80 backup; //這臺機器性能低,當其他機器不能提供服務的時候,就用使用備份這臺服務器

}

...

}

        網頁根目錄

location  / { ... }

用來匹配用戶訪問web服務器時的URL

   可以使用正則表達式匹配用戶URL

http://www.baidu.com/music/3.mp3

  .html

  .php

  .css

~   區分字母大小寫匹配

~*  不區分字母大小寫匹配


!~   區分字母大小寫不匹配

!~* 不區分字母大小寫不匹配



防盜鏈:

別的網站盜用了我網站的圖片,客戶端能通過訪問別的公司的網站,點擊鏈接卻跳到了我公司的頁面

消耗我公司的資源和帶寬,因此需要做防盜鏈,防止別人盜我公司的圖片鏈接



   不區分大小寫匹配   以這些做後輟名

location ~*  \.(gif|jpg|png|swf|flv)$ {

valid_referersnoneblocked   www.wsyht.com     *.nginx.com;

來源   沒來源   防火牆來的  域 名來的

    無效    引擎

if($invalid_referer){    #上面後輟名以上面的那些來源訪問的的就可以訪問,不匹配就返回下面的錯誤頁面

#rewrite ^/  http://192.168.1.254/error.html    #返回錯誤頁面

return 404;     #或錯誤返回404

}

}


nginx可以用本地模塊做防盜鏈

也可以用第三方模塊做防盜鏈


第三方模塊

nginxhttpaccessmodules



【Nginx搭建】

一、搭建Nginx服務器(Redhat5.9)

用地址192.168.2.1的服務器做網站服務器

準備工作:

#netstat -tulnp | grep :80

#service httpd stop

#chkconfig --level 35 httpd off

#yum -y groupinstall "開發工具" "開發庫"

#yum -y install gcc gcc-c++ make

#yum -y install pcre-devel


安裝(源碼Nginx包)

#cd

#useradd -M -s /sbin/nologin nginx

#tar -zxvf nginx-0.8.55.tar.gz

#cd nginx-0.8.55

#./configure \

> --prefix=/usr/local/nginx \

> --user=nginx \

> --group=nginx \

> --with-http_stub_status_module \       #提供nginx狀態查看功能

> --with-http_ssl_module     #(依賴於openssl openssl-devel)     後期可以通過https訪問web服務器

#make && make install

啓動服務 

#./nainx


訪問本機網頁

#elinks --dump http://localhost



二、平滑升級(在不停止服務的情況下升級軟件版本)

#cd

#tar -zxvf nginx-1.0.5.tar.gz 

#cd nginx-1.0.5

#./configure \

> --prefix=/usr/local/nginx \

> --user=nginx \

> --group=nginx \

> --with-http_stub_status_module \      

> --with-http_ssl_module \

> --with-http_gzip_static_module 

#make

#cd objs

#mv /usr/local/nginx/sbin/nginx nginx.old

#cp nginx /usr/local/nginx/sbin/

#cd ..

#make upgrade

#/usr/local/naginx/sbin/nginx -v

#elink --dump http://localhost



三、配置Nginx虛擬主機(修改/usr/local/nginx/conf/)

實驗1:

配置基於域名的虛擬主機(通過主機名區分用戶的訪問)


修改主配置文件

#cd /usr/local/nginx/conf

#vi nginx.conf

...

http{

server{

  listen 80;

  server_name www.wsyht.com;

  location / {

root /www;

index index.html;

  }

}

server{ 

  listen 80;

  server_name bbs.wsyht.com;

  location / {

root /bbs;

index index.html;

  }

}


    }

...


創建網頁目錄和網頁文件

#mkdir /www;echo www.wsyht.com > /www/index.html

#mkdir /bbs;echo bbs.wsyht.com > /bbs/index.html


檢測服務

#/usr/local/nginx/sbin/nginx -t


關閉重啓服務

#/usr/loca/nginx/sbin/nginx -s stop

#/usr/local/nginx/sbin/nginx 


修改host文件(域名解析)

#vi /etc/hosts

...

192.168.2.1www.wsyht.comwww

192.168.2.1bbs.wsyht.combbs


測試

#elinks --dump http//www.wsyht.com

#elinks --dump http//bbs.wsyht.com



實驗二:

配置基於端口的虛擬主機


修改主配置文件

#cd /usr/local/nginx/conf/

#vi nginx.conf

...

http{

server{

  listen 8080;

  server_name dns.baidu.com;

  location / {

root  /dns;

index index.html;

  }    

}

server{

   listen 8090;

  server_name blog.baidu.com;

  location / {

root  /blog;

index index.html;

}

    }

...


創建網頁目錄和網頁文件

#mkdir /dns;echo "www.baidu.com" > /dns/index.html

#mkdir /blog;echo "bbs.baidu.com" > /blog/index.html


服務測試重啓

#/usr/local/nginx/sbin/nginx -t

#pkill -hup nginx


修改host文件(域名解析)

#vi /etc/hosts

...

192.168.2.1 www.baidu.com www

192.168.2.1 bbs.baidu.com bbs


測試

elinks --dump http://www.baidu.com:8080 

elinks --dump http://bbs.baidu.com:8090 



實驗三

配置基於ip的虛擬主機


修改主配置文件

#cd /usr/local/nginx/conf/

#vim nginx.conf

...

http{

server{

  listen 192.168.2.2:80;

  server_name mail.baidu.com;

  location / {

root  /mail;

index index.html;

  }    

}

server{

   listen 192.168.2.3:80;

  server_name fack.baidu.com;

  location / {

root  /fack

index index.html;

}

    }

...


創建網頁目錄和網頁文件

#mkdir /mail;echo "mail.baidu.com" > /mail/index.html

#mkdir /fack;echo "fack.baidu.com" > /fack/index.html


服務測試重啓

#/usr/local/nginx/sbin/nginx -t

#pkill -hup nginx


修改host文件(域名解析)

#vi /etc/hosts

...

192.168.2.2 mail.baidu.com mail

192.168.2.3 fack.baidu.com fack


添加臨時虛擬網卡端口

#ifconfig eth0:0 192.168.2.2

#ifconfig eth0:0 192.168.2.3


測試

#elinks --dump http://192.168.2.2

#elinks --dump http://192.168.2.3 



四、客戶端訪問控制

...

http{

server{

  listen www.baidu.com:80;

  server_name www.baidu.com;

  location / {

allow 192.168.2.2     //允許2.2訪問

deny all       //拒絕所有

root  /www;

index index.html;

  }    

}

server{

  listen www.baidu.com:80;

  server_name www.baidu.com;

  location / {

deny 192.168.2.2//拒絕2.2訪問

allow all//允許所有

root  /www;

index index.html;

  }    

}

     }

...



五、用戶訪問控制

#cd /usr/local/nginx/conf

#vi nginx.conf

...

http{

server{

  listen www.baidu.com:80;

  server_name www.baidu.com;

  location / {

auth_basic "auth-domain" //指定認證域的名字,名字隨便取

auth_basic_user_file  /usr/local/nginx/conf/authuser.txt //保存用戶名的文件,最後面文件名隨便取

root  /www;

index index.html;

  }    

}

...

#htpasswd -c /usr/local/nginx/conf/authuser.txt admin //創建文件authuser.txt和訪問用戶名admin,密碼隨便填    

#htpasswd  /usr/local/nginx/conf/authuser.txt jack //創建用戶名jack,密碼隨便填    

      


六、Nginx反向代理   


拓撲圖:

    公網客戶端

     1.1.1.1          http://1.1.1.254

|  1.1.1.254  

|

          | nginx |  反向代理服務器

|

192.158.1.254    | |

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

           |              |

          web_A        web_B   

    192.168.1.10   192.168.1.100


1、配置內網的2臺網站服務器 並編寫首頁文件

詳細過程請參考最上面實驗,過程略...


2、開啓nginx服務器

詳細過程請參考最上面實驗,過程略...


3、配置nginx反向代理

配置主配置文件,默認輪詢方式

#cd /usr/lcoal/nginx/conf

vi nginx.conf

http {

upstream webgrp {

server192.168.1.10:80;

server  192.168.1.100:80;

}

server{

 ...

  location / {

 ...

    proxy_pass http://webgrp;    //允許整個組被輪詢訪問

  }

}


}


重啓服務

#cd ..;cd sbin

#pkill -hup nginx


公網客戶端測試

#elinks --dump http://1.1.1.254



防盜料


拓撲圖:


192.168.1.10------------192.168.1.100------------------192.168.1.254 

  客戶端                  盜鏈網站nginx網站服務器(配置圖片防盜鏈)


盜鏈網站配置


啓動服務

#servcie httpd start


編寫網頁文件

#cat /var/www/html/test.html

<html>

        <body>

                <a href="http://192.168.1.254/one.png">show image</a>

        </body>

</html>


重啓服務

#service httpd restart



Nginx網站服務器配置


在主配置文件配置防盜鏈

vi /usr/local/nginx/conf/nginx.conf

http{

server{

...

        location ~* \.(gif|jpg|png|swf|flv)$ {


        valid_referers none blocked www.wsyht.com  *.nginx.com;


          if ($invalid_referer) {

            rewrite ^/  http://192.168.1.254/error.html

            #return 404;

         }

       }    

...

}



配置錯誤文件

#echo "Error Page" > /usr/local/nginx/html/error.html


編寫網頁文件

#cat /var/www/html/test.html

<html>

        <body>

                <a href="http://192.168.1.254/one.png">show image</a>

        </body>

</html>


重啓服務

#pkill -hup nginx



客戶端配置


安裝圖形界面

#yum groupinstall -y "圖形"   //支持圖形頁面瀏覽


修改host文件

#vi /etc/hosts

...

192.168.1.254www.wsyht.com www


瀏覽器訪問測試

#http://192.168.1.100/test.html

#http://www.wsyht.com/test.html

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