當伺服器的訪問量大量飆公升的時候,一台伺服器就會承受不了那麼大的壓力,所以我們可以將例如web這種服務進行分流,**到其他伺服器進行處理,這種**的方式使用的是nginx的ngx_http_proxy_module模組和upstream功能。
一、機器準備和軟體安裝
首先要準備三颱虛擬機器,一台虛擬機器安裝nginx進行**功能的實現,另外兩台安裝httpd進行web功能的實現。在這裡,我準備了一台ip為172.16.2.1的主機安裝nginx,另兩台ip分別為172.16.2.2和172.16.2.3的主機安裝httpd(三颱都是centos 6):
1
2
3
4
5
6
配置yum源:
使用yum -y install nginx和yum -y install httpd來進行安裝,安裝完成之後,啟動服務,就可以通過瀏覽器來進行檢視(修改主頁在這裡不贅述nginx在「/usr/share/nginx/html/index.html」,httpd在「/var/www/html/index.html」):
二、ngx_http_proxy_module模組
反代**能夠實現的功能是當我們訪問172.16.2.1的時候,nginx伺服器自動的將我們的訪問請求**到172.16.2.2上(172.16.2.3暫時不用),這個功能是使用ngx_http_proxy_module模組來實現的,這個模組中主要使用的引數是:proxy_pass url,它的功能是:設定乙個被**的伺服器的位址和協議以及乙個用於被對映位置的可選的uri;可以反代http協議和https協議;伺服器位址可以是乙個網域名稱或者ip位址再加上乙個可選的埠號;
注意:
1) proxy_pass後面的路徑不帶uri時,其會將location的uri傳遞給後端主機;
location /uri/
2) proxy_pass後面的路徑是乙個uri,其會將location的uri替換成proxy_pass指令後面的uri,我們可以在目標位址後面加上乙個「/」來達到不更改目錄的**方式,例如:「http://host/」;
location /uri/
3) 如果location定義uri時使用正規表示式的模式匹配(~|~*),則proxy_pass指令之後絕對不能使用uri;否則nginx會將之視為語法錯誤;
location ~(區分大小寫)|~*(不區分大小寫) pattern
我們在ip為172.16.2.1的nginx反代伺服器上修改其配置檔案「/etc/nginx/conf.d/default.conf」(有的配置檔案在其主配置檔案中),在這個配置檔案中找到如圖所示的地方,將圖中所示的那行**新增上,就可以實現將對「172.16.2.1」的請求**到「172.16.2.2」上。(在上邊的注意中提到了對uri的匹配,在這裡就能夠用到,將這條語句加在了這裡,實現的功能就是將所有的請求進行**,我們也可以另外寫乙個「location」來匹配對應的uri)修改之後,儲存退出並使用命令「nginx -t」來檢查拼寫是否有誤,使用命令「nginx -s reload」來重啟服務。在重啟之後,我們再次通過瀏覽器訪問「172.16.2.1」,發現頁面為我們展示的就是「172.16.2.2」的內容了:
三、ngx_http_upstream_module模組
上頭我們已經可以將前邊來的web請求**到後端web伺服器上了,但是僅僅只能**到一台伺服器上,所以在這裡我們可以使用ngx_http_upstream_module模組來實現集群,使其能夠**到多個後端web伺服器上。在上面我們準備了三颱主機,一台作為nginx**伺服器,兩台作為web伺服器。在上面的實驗之後,我們將其轉變為集群是一件很簡單的事情,只需要在nginx配置檔案的http上下文(server外邊)中(如果片段配置檔案中沒有http上下文,可以在主配置檔案中新增)新增下面這幾行**,並在location中引用即可:
在這裡使用「location」指令將符合條件的**到伺服器組中:
從圖中我們可以看到集群的基本功能已經實現了,這是基於nginx的反向**功能實現的,它的功能比ipvsadm更加靈活,可以基於uri進行詳細或不詳細的匹配,而且其還可以自動的對後端web伺服器進行檢測,一旦測試到後端web伺服器掛掉,就能夠立即做出應急處理,例如,我們可以將「172.16.2.2」上的httpd服務關閉,然後在「172.16.2.1」上再次進行請求,可以發現,nginx伺服器已經將「172.16.2.2」從web伺服器組中剔除了:
日常 nginx反代websocket
去年的事 隨便記記 2017年11月6日 記錄 獲取包的選擇狀態 dpkg get selections package dpkg get selections grep nginx 完全解除安裝nginx apt get purge remove nginx apt get purge remov...
詳解 Nginx反代實現Kibana登入認證功能
kibana 5.5 版後,已不支援認證功能,也就是說,直接開啟頁面就能管理,想想都不安全,不過官方提供了 x pack 認證,但有時間限制。畢竟x pack是商業版。下面我將操作如何使用nginx反向 實現kibana的認證功能。安裝apache httpd 密碼生成工具 yum install ...
詳解 Nginx反代實現Kibana登入認證功能
kibana 5.5 版後,已不支援認證功能,也就是說,直接開啟頁面就能管理,想想都不安全,不過官方提供了 x pack 認證,但有時間限制。畢竟x pack是商業版。下面我將操作如何使用nginx反向 實現kibana的認證功能。安裝apache httpd 密碼生成工具 yum install ...