nginx在asp.net mvc項目中 配置 初步快速入門


nginx 官方下載地址

http://nginx.org/en/download.html

一般.net項目要運行在IIS環境下,自然選擇windows版下載

我這里下載了nginx/Windows-1.14.0並解壓包,conf目錄下找到nginx.conf文件,使用記事本方式打開。

里面主要分為幾大塊,全局塊、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 停止服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM