nginx 官方下載地址html
http://nginx.org/en/download.htmlnginx
通常.net項目要運行在IIS環境下,天然選擇windows版下載算法
我這裏下載了nginx/Windows-1.14.0並解壓包,conf目錄下找到nginx.conf文件,使用記事本方式打開。windows
裏面主要分爲幾大塊,全局塊、events塊、http塊、server塊和location塊。後端
下面是設置好的配置文件。緩存
#########-全局塊-######### #user administrator administrators; #配置用戶或者組 worker_processes 1; #容許生成的進程數,默認爲1 #pid logs/nginx.pid; #指定nginx進程運行文件存放地址 error_log logs/error.log error; #制定日誌路徑,級別:debug|info|notice|warn|error|crit|alert|emerg ########-events塊-######## events { accept_mutex on; #設置網路鏈接序列化,防止驚羣現象發生,默認爲on multi_accept on; #設置一個進程是否同時接受多個網絡鏈接,默認爲off #use epoll; #事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; #最大鏈接數 } #########-http塊-######### http { include mime.types; #文件擴展名與文件類型映射表 default_type application/octet-stream; #默認文件類型,默認爲text/plain #access_log off; #取消服務日誌 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #自定義格式 access_log logs/access.log main; sendfile on; #容許sendfile方式傳輸文件 #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #鏈接超時時間 #gzip on; upstream mysvr.com { server 127.0.0.1:8080 weight=8; server 127.0.0.1:8081 weight=9; } server { listen 80; #監聽端口 server_name 127.0.0.1; #監聽地址 #charset koi8-r; #access_log logs/host.access.log main; location / { #root html; #根目錄 #index index.html index.htm; #設置默認頁 random_index on; #隨機訪問服務器 #設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實IP proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_connect_timeout 1; proxy_send_timeout 30; proxy_read_timeout 60; client_max_body_size 50m; client_body_buffer_size 256k; proxy_pass http://mysvr.com; #請求轉向mysvr 定義的服務器列表 } #error_page 404 /404.html; #錯誤頁 # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; #location = /50x.html { # root html; #} } }
#號表明註釋,這裏主要說明下server塊和location塊。服務器
server塊中 listen 80 顧名思義這是nginx啓動後監聽的端口,server_name就是監聽IP地址,部署的時候要填寫外網IP就能夠了。
location塊中 root是訪問根目錄,index是默認頁,咱們這裏使用proxy_pass反向代理轉發其餘服務器地址就先註釋掉了。
接下來講下,proxy_pass 配置
proxy_pass http://mysvr.com; mysvr.com是自定義的名字,經過上面定義的upstream塊映射獲取server地址訪問。
upstream mysvr.com {
server 192.168.1.10:8080; server 192.168.1.10:8081; }
默認方式:依照輪詢,方式進行負載,每個請求按時間順序逐一分配到不一樣的後端服務器。假設後端服務器down掉。能本身主動剔除。儘管這樣的方式簡便、成本低廉。但缺點是:可靠性低和負載分配不均衡。
upstream mysvr.com {
server 192.168.1.10:8080 weight=8; server 192.168.1.10:8081 weight=9; }
weight概率方式:指定輪詢概率,weight和訪問比率成正比,用於後端服務器性能不均的狀況,若是後端服務器down掉,能自動剔除。
upstream mysvr.com {
ip_hash; server 192.168.1.10 weight=8; server 192.168.2.10 weight=9; }
ip_hash:每一個請求按照發起客戶端的ip的hash結果進行匹配,這樣的算法下一個固定ip地址的客戶端總會訪問到同一個後端服務器,這也在必定程度上解決了集羣部署環境下session共享的問題。
upstream mysvr.com{
server 192.168.1.10;
server 192.168.2.10;
fair;
}
fair(第三方)按後端服務器的響應時間來分配請求,響應時間短的優先分配。與weight分配策略相似。
upstream mysvr.com{
server 192.168.1.10:8080;
server 192.168.1.10:8081;
hash $request_uri;
hash_method crc32;
}
url_hash(第三方)按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器。後端服務器爲緩存時比較有效。
注意:在upstream中加入hash語句。server語句中不能寫入weight等其餘的參數,hash_method是使用的hash算法。upstream還可以爲每個設備設置狀態值,這些狀態值的含義分別例如如下:down 表示單前的server臨時不參與負載.weight 默以爲1.weight越大,負載的權重就越大。max_fails :贊成請求失敗的次數默以爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤.fail_timeout : max_fails次失敗後。暫停的時間。backup: 其餘所有的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕。upstream bakend{ #定義負載均衡設備的Ip及設備狀態 ip_hash; server 10.0.0.11:9090 down; server 10.0.0.11:8080 weight=2; server 10.0.0.11:6060; server 10.0.0.11:7070 backup; }都配置好後,就能夠啓動nginx了,雙擊nginx.exe運行也能夠。或者打開cmd窗口,進入nginx目錄下運行start nginx 啓動。運行nginx.exe -s reload 重啓。nginx.exe -s stop 中止服務。