導航:首頁 > 配伺服器 > nginx怎麼設置負載伺服器

nginx怎麼設置負載伺服器

發布時間:2022-09-19 15:35:26

A. windows版nginx怎樣配置負載均衡

一、 下載Nginx(nginx-1.5.8.zip)

解壓到D:/serve目錄下

雙擊運行nginx.exe,屏幕一閃而過或者在DOS裡面敲打命令,如圖所示:

可以看到屏幕一閃而過,接下來測試一下是否安裝啟動成功;

在任務管理器的進程中查看nginx.exe是否啟動

若看到該映像名稱,證明nginx程序已經啟動成功!
這時我們就可以在瀏覽器中訪問:http://localhost

這樣我們就成功的搭建了一個nginx服務!!
Nginx+Tomcat負載均衡配置這里只需要修改Nginx的配置文件nginx.conf,讓它通過tomcat來轉發。
Nginx配置文件完成如下:
#使用的用戶和組,window下不指定
#user nobody;
#指定工作衍生進程數(一般等於CPU總和數或總和數的兩倍,例如兩個四核CPU,則總和數為8)
worker_processes 1;
#指定錯誤日誌文件存放路徑,錯誤日誌級別可選項為【debug|info|notice|warn|error|crit】
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#指定pid存放路徑
#pid logs/nginx.pid;

#工作模式及連接數上限
events {
#使用網路I/O模型,Linux系統推薦使用epoll模型,FreeBSD系統推薦使用kqueue;window下不指定
#允許的連接數
#user epoll;
worker_connections 100;
}

#設定http伺服器,利用他的反向代理功能提供負載均衡支持
http {
#設定mime類型
include mime.types;
default_type application/octet-stream;
#設定日誌格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;

access_log logs/access.log main;
#設定access log
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 0;
keepalive_timeout 65;
#開啟gzip模塊
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain application/x-javascript text/css application/xml;
output_buffers 1 32k;
postpone_output 1460;
server_names_hash_bucket_size 128;
client_max_body_size 8m;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_vary on;
#設定負載均衡的伺服器列表
upstream localhost {
#設定負載均衡的伺服器列表
#ip_hash;
#同一機器在多網情況下,路由切換,ip可能不同 #weigth參數表示權值,權值越高被分配到的幾率越大
server 192.168.101.222:8088 max_fails=2 fail_timeout=600s;
server 192.168.101.5:8081 max_fails=2 fail_timeout=600s;
}
#設定虛擬主機
server {
listen 80;
server_name localhost;

charset UTF-8;
#設定本虛擬主機的訪問日誌
access_log logs/host.access.log main;
#對 "/" 啟用負載均衡
location / {
root \\192.168.101.222\D:\web\apache-tomcat-6.0.37\webapps;
index index.html index.htm index.aspx;
proxy_redirect off;
#保留用戶真實信息
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#允許客戶端請求的最大單個文件位元組數
client_max_body_size 10m;
#緩沖區代理緩沖用戶端請求的最大位元組數,可以理解為先保存到本地再傳給用戶
client_body_buffer_size 128k;
#跟後端伺服器連接超時時間 發起握手等候響應超時時間
proxy_connect_timeout 12;
#連接成功後 等待後端伺服器響應時間 其實已進入後端的排隊之中等候處理
proxy_read_timeout 90;
#代理請求緩存區 這個緩存區間會保存用戶的頭信息一共Nginx進行規則處理 一般只要能保存下頭信息即可
proxy_send_timeout 90;
#同上 告訴Nginx保存單個用的幾個Buffer最大用多大空間
proxy_buffer_size 4k;
proxy_buffers 4 32k;
#如果系統很忙的時候可以申請國內各大的proxy_buffers 官方推薦 *2
proxy_busy_buffers_size 64k;
#proxy 緩存臨時文件的大小
proxy_temp_file_write_size 64k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_pass http://localhost;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

}
四、測試
前提是分別啟動兩台機器的tomcat,其次啟動nginx服務;
在192.168.101.23上訪問nginx伺服器(通過訪問(項目路徑)來實現對192.168.101.222和192.168.101.5這兩個機器上應用程序的訪問,最終實現tomcat的均衡負載)
[1]關閉192.168.101.222上的tomcat服務,訪問192.168.101.23上的nginx服務,觀察192.168.101.5上的tomcat是否運行;
[2]關閉192.168.101.5上的tomcat服務,訪問192.168.101.23上的nginx服務,觀察192.168.101.222上的tomcat是否運行;
[3]兩個tomcat都啟動,訪問nginx服務,模擬並發用戶n個,觀察tomcat的運行情況;
如果[1]和[2]的tomcat都運行就說明搭建nginx代理服務成功,tomcat實現了均衡負載;

B. 我用nginx配置webservice負載均衡,怎麼弄

http {
upstream myserver {
#你的後端伺服器地址

server 192.168.1.120:80 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.1.121:80 weight=1 max_fails=3 fail_timeout=20s;
}
server {
listen 80;
server_name localhost;
index index.html index.htm;
#ciharset koi8-r;
root html;
#access_log logs/host.access.log main;

location / {
#你上面定義的集群名

proxy_pass http://myserver;
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;

}
}

C. Nginx相關知識點

Nginx是lgor Sysoev為俄羅斯訪問量第二的rambler.ru站點設計開發的。從2004年發布至今,憑借開源的力量,已經接近成熟與完善。

Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。並且支持很多第三方的模塊擴展。

Nginx的穩定性、功能集、示例配置文件和低系統資源的消耗讓他後來居上,在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站。

自行安裝

正向代理: 代理伺服器站在客戶端那邊就是正向代理;
反向代理: 代理伺服器站在原始伺服器那邊就是反向代理;
詳解參考點擊 Nginx正向代理與反向代理

Nginx在做反向代理時,提供性能穩定,並且能夠提供配置靈活的轉發功能。
Nginx可以根據不同的正則匹配,採取不同的轉發策略,比如圖片文件結尾的走文件伺服器,動態頁面走web伺服器,只要你正則寫的沒問題,又有相對應的伺服器解決方案,你就可以隨心所欲的玩。
並且Nginx對返回結果進行錯誤頁跳轉,異常判斷等。如果被分發的伺服器存在異常,他可以將請求重新轉發給另外一台伺服器,然後自動去除異常伺服器。

如果你的nginx伺服器給2台web伺服器做代理,負載均衡演算法採用輪詢,那麼當你的一台機器web程序iis關閉,也就是說web不能訪問,那麼nginx伺服器分發請求還是會給這台不能訪問的web伺服器,如果這里的響應連接時間過長,就會導致客戶端的頁面一直在等待響應,對用戶來說體驗就打打折扣,這里我們怎麼避免這樣的情況發生呢。這里我配張圖來說明下問題。

如果負載均衡中其中web2發生這樣的情況,nginx首先會去web1請求,但是nginx在配置不當的情況下會繼續分發請求道web2,然後等待web2響應,直到我們的響應時間超時,才會把請求重新分發給web1,這里的響應時間如果過長,用戶等待的時間就會越長。

下面的配置是解決方案之一:

如果使用upstream指令配置了一組伺服器作為被代理伺服器,伺服器中的訪問演算法遵循配置的負載均衡規則,同時可以使用該指令配置在發生哪些異常情況時,將請求順次交由下一組伺服器處理。

狀態值可以是:error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

Nginx提供的負載均衡策略有2種:內置策略和擴展策略。
內置策略: 1.輪詢;2.加權輪詢;3.Ip hash;
擴展策略: 就天馬行空,只有你想不到的沒有他做不到的啦,你可以參照所有的負載均衡演算法,給他一一找出來做下實現。

Ip hash演算法,對客戶端請求的ip進行hash操作,然後根據hash結果將同一個客戶端ip的請求分發給同一台伺服器進行處理,可以解決session不共享的問題。

eg:

開啟簡單的緩存配置,只需要兩個指令:proxy_cache_path和proxy_cache。
proxy_cache_path: 配置緩存的存放地址和其他的一些常用配置;
proxy_cache:指令是為了啟動緩存;

相關配置說明:

該指令用於定義滿足條件的響應不會被保存到緩存中。在條件字元串中至少有一個條件不為空或者0,符合這樣條件的響應才不會被緩存。
舉例如下

其中,cookie_nocache、arg_nocache...皆為變數,可以根據你訪問的匹配策略來設置,其值只有2類,0和非0;

訪問匹配策略例如:

如果在此鏈式配置中,只要有一個值不為0,則不會cache;例如:

則不會被cache.

註:一般會配合proxy_cache_bypass共同使用;

該指令用於定義哪些情況不從cache讀取,直接從backend獲取資源;配置方式同proxy_no_cache。

給緩存數據定義一個鍵,例如

該指令用於設置緩存哪些HTTP方法,默認緩存HTTP GET/HEAD方法,不緩存HTTP POST 方法.。

設置不同響應碼的緩存時間,當不指定響應碼的時候,例如

只對響應碼為200,301,302的訪問請求資源設置緩存時間,此外可以個性化定製,例如:

此外,還可以在相應header里設置優先順序更高的緩存有效時間:

不緩存包含在field的響應header,可以設置的值有:「X-Accel-Redirect」, 「X-Accel-Expires」, 「X-Accel-Limit-Rate」,「X-Accel-Buffering」, 「X-Accel-Charset」, 「Expires」, 「Cache-Control」, 「Set-Cookie」 (0.8.44), and 「Vary」。
如果上述的header field沒有設置為忽略,則header filed中有「X-Accel-Expires」, 「Expires」, 「Cache-Control」, 「Set-Cookie」, and 「Vary」的話,響應會被緩存。

該指令用於設置緩存的最小使用次數,默認值為1

源站有問題時,nginx可以通過proxy_cache_use_stale指令開啟容錯能力,即使用緩存內容來響應客戶端的請求。舉例如下:

如上配置表示,當作為cache的NGINX收到源站返回error、timeout或者其他指定的5XX錯誤,並且在其緩存中有請求文件的陳舊版本,則會將這些陳舊版本的文件而不是錯誤信息發送給客戶端。

使用NGINX,不需要建立一個RAID(磁碟陣列)。如果有多個硬碟,NGINX可以用來在多個硬碟之間分割緩存。舉例如下:

在這份配置中,使用了3個獨立的緩存,每個緩存專用一塊硬碟,另外,3個獨立的線程池也各自專用一塊硬碟。

緩存之間(其結果就是磁碟之間)的負載均衡使用split_clients模塊,split_clients非常適用於這個任務。
在 proxy_cache_path指令中設置 use_temp_path=off ,表示NGINX會將臨時文件保存在緩存數據的同一目錄中。這是為了避免在更新緩存時,磁碟之間互相復制響應數據。

通過訪問日誌,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關信息;
通過錯誤日誌,你可以得到系統某個服務或server的性能瓶頸等。
因此,將日誌好好利用,你可以得到很多有價值的信息。

打開nginx.conf配置文件:vim /usr/local/nginx/conf/nginx.conf
日誌部分內容:
#access_log logs/access.log main;
日誌生成的到Nginx根目錄logs/access.log文件,默認使用「main」日誌格式,也可以自定義格式。
默認「main」日誌格式:

參數明細表:

查看日誌命令tail -f /usr/local/nginx/logs/access.log

打開nginx.conf配置文件去掉#注釋見下圖:

自定義某一個server配置的日誌,使用「main」日誌格式。

日誌生成的到Nginx根目錄logs/access.log文件,默認使用「main」日誌格式,也可以自定義格式。

重新讀取載入Nginx配置文件:

執行命令:nginx-s reload

網上一位老師寫的log文件分解的腳本

此腳本執行時間根據自己公司情況來定,可以設置默認一天執行一次;

創建crontab設置作業

設置日誌文件存放目錄crontab -e

*/1 * * * * sh /usr/local/software/nginx/nginx_log.sh
此設置的為一分鍾,如果設置一天自行修改;

默認的 nginx 配置文件 nginx.conf 內容如下

示例

幾個常見配置項:

注意:

驚群現象:一個網路連接到來,多個睡眠的進程被同事叫醒,但只有一個進程能獲得鏈接,這樣會影響系統性能
每個指令必須有分號結束。

進入安裝目錄下的sbin

閱讀全文

與nginx怎麼設置負載伺服器相關的資料

熱點內容
php論壇實訓報告 瀏覽:403
java日期字元串轉換成日期 瀏覽:135
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345