nginx配置_反向代理_負載均衡

什麼是nginx

Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。由俄羅斯的程序設計師Igor Sysoev所開發,官方測試nginx能夠支支撐5萬併發鏈接,並且cpu、內存等資源消耗卻非常低,運行非常穩定

應用場景

1、http服務器。Nginx是一個http服務可以獨立提供http服務。可以做網頁靜態服務器。
2、虛擬主機。可以實現在一臺服務器虛擬出多個網站。例如個人網站使用的虛擬主機。
3、反向代理,負載均衡。當網站的訪問量達到一定程度後,單臺服務器不能滿足用戶的請求時,需要用多臺服務器集羣可以使用nginx做反向代理。並且多臺服務器可以平均分擔負載,不會因爲某臺服務器負載高宕機而某臺服務器閒置的情況

linux下安裝nginx

環境要求

1、需要安裝gcc的環境。yum install gcc-c++
2、第三方的開發包。
 PCRE
PCRE(Perl Compatible Regular Expressions)是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx的http模塊使用pcre來解析正則表達式,所以需要在linux上安裝pcre庫。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre開發的一個二次開發庫。nginx也需要此庫。
 zlib
zlib庫提供了很多種壓縮和解壓縮的方式,nginx使用zlib對http包的內容進行gzip,所以需要在linux上安裝zlib庫。
yum install -y zlib zlib-devel

 openssl
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。
nginx不僅支持http協議,還支持https(即在ssl協議上傳輸http),所以需要在linux安裝openssl庫。
yum install -y openssl openssl-devel

安裝步驟

第一步:把nginx的源碼包上傳到linux系統
第二步:解壓縮
[root@localhost ~]# tar zxf nginx-1.8.0.tar.gz
第三步:使用configure命令創建一makeFile文件。
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi
注意:啓動nginx之前,上邊將臨時文件目錄指定爲/var/temp/nginx,需要在/var下創建temp及nginx目錄
[root@localhost sbin]# mkdir /var/temp/nginx/client -p
第四步:make
第五步:make install

啓動nginx及基本命令

進入sbin目錄
[root@localhost sbin]# ./nginx

關閉nginx:
[root@localhost sbin]# ./nginx -s stop
推薦使用:
[root@localhost sbin]# ./nginx -s quit

重啓nginx:
1、先關閉後啓動。
2、刷新配置文件:
[root@localhost sbin]# ./nginx -s reload
** 注意關閉防火牆 **

使用nginx

1.配置虛擬主機

如何區分不同的網站:
1、域名不同
2、端口不同
Nginx的配置文件:
/usr/local/nginx/conf/nginx.conf 中

  server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
}

** 一個server節點就是一個虛擬主機 **
** root Html是nginx安裝目錄下的html目錄(靜態頁面存放的位置,也可以使用絕對路徑) **

配置多個虛擬主機

 server {
    listen       81;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html-81;
        index  index.html index.htm;
    }
}

重新加載配置文件
[root@localhost nginx]# sbin/nginx -s reload

5.2. 通過域名區分虛擬主機

5.2.1. 什麼是域名
域名就是網站。
www.baidu.com
www.taobao.com
www.jd.com
Tcp/ip

Dns服務器:把域名解析爲ip地址。保存的就是域名和ip的映射關係。
一級域名:
Baidu.com
Taobao.com
Jd.com
二級域名:
www.baidu.com
Image.baidu.com
Item.baidu.com
三級域名:
1.Image.baidu.com
Aaa.image.baidu.com

一個域名對應一個ip地址,一個ip地址可以被多個域名綁定。

本地測試可以修改hosts文件。
修改window的hosts文件:(C:\Windows\System32\drivers\etc)
可以配置域名和ip的映射關係,如果hosts文件中配置了域名和ip的對應關係,不需要走dns服務器。

綁定多個域名

 server {
        listen       80;
        server_name  www.taobao.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-taobao;
            index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  www.baidu.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html-baidu;
            index  index.html index.htm;
        }
    }

域名的配置:
192.168.25.148 www.taobao.com
192.168.25.148 www.baidu.com

nginx反向代理

概念圖:反向代理服務器不提供服務
反向代理概念圖
演示圖
** 搜狐 和新浪域名在本地hosts中被綁定到自己的IP了 **
nginx配置:
複製一個server節點,將root改成proxy_pass
配置upstream

	upstream tomcat1 {
		server 192.168.25.148:8080;
	    }
	    server {
	        listen       80;
	        server_name  www.sina.com.cn;
	
	        #charset koi8-r;
	
	        #access_log  logs/host.access.log  main;
	
	        location / {
	            proxy_pass   http://tomcat1;
	            index  index.html index.htm;
	        }
	    }
	    upstream tomcat2 {
		server 192.168.25.148:8081;
	    }
	    server {
	        listen       80;
	        server_name  www.sohu.com;
	
	        #charset koi8-r;
	
	        #access_log  logs/host.access.log  main;
	
	        location / {
	            proxy_pass   http://tomcat2;
	            index  index.html index.htm;
	        }
	    }

第四步:nginx重新加載配置文件

反向代理個人理解

用戶通過域名訪問我 -->nginx作爲反向代理服務器接收到請求(多個域名都綁定到nginx服務器上)–>nginx通過配置的servername找到相應的代理路徑轉發請求–>用戶實際獲得的服務由具體的服務器提供(nginx不提供服務只轉發請求)

負載均衡

如果由多個服務器同時提供一個服務 則將多個服務器同時添加到upstream中 並且可以根據具體服務器性能配置權重 權重越高則承受的壓力越大. 默認權重都是1

 upstream tomcat2 {
	server 192.168.25.148:8081;
	server 192.168.25.148:8082 weight=2;
    }

負載均衡實現高可用

nginx併發量官方數據是5萬 實際3到4萬.nginx掛了的話整個系統都不能用了,所以需要配置主備.

keepalived是集羣管理中保證集羣高可用的一個服務軟件,用來防止單點故障。
Keepalived的作用是檢測web服務器的狀態,如果有一臺web服務器死機,或工作出現故障,Keepalived將檢測到,並將有故障的web服務器從系統中剔除,當web服務器工作正常後Keepalived自動將web服務器加入到服務器羣中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web服務器
keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。
虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(VIP = Virtual IP Address,虛擬IP地址,該路由器所在局域網內其他機器的默認路由爲該vip),master會發組播,當backup收不到VRRP包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模塊,分別是core、check和VRRP。core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模塊是來實現VRRP協議的

在這裏插入圖片描述
兩臺主備機都安裝keepalived
具體實現:參考安裝手冊.

易混淆點

在nginx配置那塊,虛擬多個服務器是一臺機器上模擬出多個服務器,配置多個端口(80和81)是爲了體現端口不同,網站不同. 而實際中如果代做網站都想要80端口(因爲瀏覽器訪問默認80端口)而nginx可以配置共享80端口,通過域名(配置中體現爲servername)和配置的root區分不同的網站(其實就是放在root配置的文件夾中的內容).
而反向代理那塊,是指將所有的系統域名都綁定到nginx反向代理服務器ip上,實際提供服務的那一羣服務器作爲內網.反向代理服務器在轉發到"內網".

文獻

歡迎指正
參考資料:黑馬 taotao商城第10天nginx

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