<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                @phper 2018-01-25 11:51 字數 5764 閱讀 26058 nginx的配置、虛擬主機、負載均衡和反向代理(1) nginx nginx在前面,我寫過好幾篇,相似的介紹它在各個平臺上的安裝配置以及和php-fpm的連接等。今天,這一篇,著重講解它的配置,其中包括它比較擅長的負載均衡和反向代理,還有虛擬主機功能。 nginx啟動和關閉 按照慣例,先說下各個平臺的配置情況: centos平臺,源碼安裝的: /usr/local/nginx/nginx # 啟動 /usr/local/nginx/nginx -s reload #平滑重啟 /usr/local/nginx/nginx.conf #配置文件 mac平臺,我用brew安裝的。 /usr/local/bin/nginx # 啟動 /usr/local/bin/nginx -s reload #平滑重啟 /usr/local/etc/nginx/nginx.cnf #配置文件。 nginx.conf配置文件詳解 其實,對比,apache的配置文件,它的相對比較清晰和簡單,之前覺得很難,現在沉下心來想想,其實很簡單。大致的分塊下,基本就分為以下幾塊: main events { .... } http { .... upstream myproject { ..... } server { .... location { .... } } server { .... location { .... } } .... } nginx配置文件主要分為六個區域: main(全局設置)、events(nginx工作模式)、http(http設置)、 sever(主機設置)、location(URL匹配)、upstream(負載均衡服務器設置)。 main模塊 下面時一個main區域,他是一個全局的設置: user nobody nobody; worker_processes 2; error_log /usr/local/var/log/nginx/error.log notice; pid /usr/local/var/run/nginx/nginx.pid; worker_rlimit_nofile 1024; user 來指定Nginx Worker進程運行用戶以及用戶組,默認由nobody賬號運行。 worker_processes來指定了Nginx要開啟的子進程數。每個Nginx進程平均耗費10M~12M內存。根據經驗,一般指定1個進程就足夠了,如果是多核CPU,建議指定和CPU的數量一樣的進程數即可。我這里寫2,那么就會開啟2個子進程,總共3個進程。 error_log用來定義全局錯誤日志文件。日志輸出級別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日志最為最詳細,而crit輸出日志最少。 pid用來指定進程id的存儲文件位置。 worker_rlimit_nofile用于指定一個nginx進程可以打開的最多文件描述符數目,這里是65535,需要使用命令“ulimit -n 65535”來設置。 events 模塊 events模塊來用指定nginx的工作模式和工作模式及連接數上限,一般是這樣: events { use kqueue; #mac平臺 worker_connections 1024; } use用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺上,而kqueue用在BSD系統中,因為Mac基于BSD,所以Mac也得用這個模式,對于Linux系統,epoll工作模式是首選。 worker_connections用于定義Nginx每個進程的最大連接數,即接收前端的最大請求數,默認是1024。最大客戶端連接數由worker_processes和worker_connections決定,即Max_clients=worker_processes*worker_connections,在作為反向代理時,Max_clients變為:Max_clients = worker_processes * worker_connections/4。 進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令“ulimit -n 65536”后worker_connections的設置才能生效。 http 模塊 http模塊可以說是最核心的模塊了,它負責HTTP服務器相關屬性的配置,它里面的server和upstream子模塊,至關重要,等到反向代理和負載均衡以及虛擬目錄等會仔細說。 http{ 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"'; access_log /usr/local/var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 10; #gzip on; upstream myproject { ..... } server { .... } } 下面詳細介紹下這段代碼中每個配置選項的含義。 include 用來設定文件的mime類型,類型在配置文件目錄下的mime.type文件定義,來告訴nginx來識別文件類型。 default_type設定了默認的類型為二進制流,也就是當文件類型未定義時使用這種方式,例如在沒有配置asp 的locate 環境時,Nginx是不予解析的,此時,用瀏覽器訪問asp文件就會出現下載了。 log_format用于設置日志的格式,和記錄哪些參數,這里設置為main,剛好用于access_log來記錄這種類型。 main的類型日志如下:也可以增刪部分參數。 127.0.0.1 - - [21/Apr/2015:18:09:54 +0800] "GET /index.php HTTP/1.1" 200 87151 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36" access_log 用來紀錄每次的訪問日志的文件地址,后面的main是日志的格式樣式,對應于log_format的main。 sendfile參數用于開啟高效文件傳輸模式。將tcp_nopush和tcp_nodelay兩個指令設置為on用于防止網絡阻塞。 keepalive_timeout設置客戶端連接保持活動的超時時間。在超過這個時間之后,服務器會關閉該連接。 還有很多各種配置,以后等用到來再說。 server 模塊 sever 模塊是http的子模塊,它用來定一個虛擬主機,我們先講最基本的配置,這些在后面再講。 我們看一下一個簡單的server 是如何做的? server { listen 8080; server_name localhost 192.168.12.10 www.yangyi.com; # 全局定義,如果都是這一個目錄,這樣定義最簡單。 root /Users/yangyi/www; index index.php index.html index.htm; charset utf-8; access_log usr/local/var/log/host.access.log main; aerror_log usr/local/var/log/host.error.log error; .... } server標志定義虛擬主機開始。 listen用于指定虛擬主機的服務端口。 server_name用來指定IP地址或者域名,多個域名之間用空格分開。 root 表示在這整個server虛擬主機內,全部的root web根目錄。注意要和locate {}下面定義的區分開來。 index 全局定義訪問的默認首頁地址。注意要和locate {}下面定義的區分開來。 charset用于設置網頁的默認編碼格式。 access_log用來指定此虛擬主機的訪問日志存放路徑,最后的main用于指定訪問日志的輸出格式。 location 模塊 location模塊是nginx中用的最多的,也是最重要的模塊了,什么負載均衡啊、反向代理啊、虛擬域名啊都與它相關。慢慢來講: location 根據它字面意思就知道是來定位的,定位URL,解析URL,所以,它也提供了強大的正則匹配功能,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。像我們的php環境搭建就是用到了它。 我們先來看這個,設定默認首頁和虛擬機目錄。 location / { root /Users/yangyi/www; index index.php index.html index.htm; } location /表示匹配訪問根目錄。 root指令用于指定訪問根目錄時,虛擬主機的web目錄,這個目錄可以是相對路徑(相對路徑是相對于nginx的安裝目錄)。也可以是絕對路徑。 index用于設定我們只輸入域名后訪問的默認首頁地址,有個先后順序:index.php index.html index.htm,如果沒有開啟目錄瀏覽權限,又找不到這些默認首頁,就會報403錯誤。 location 還有一種方式就是正則匹配,開啟正則匹配這樣:location ~。后面加個~。 下面這個例子是運用正則匹配來鏈接php。我們之前搭建環境也是這樣做: location ~ \.php$ { root /Users/yangyi/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } \.php$ 熟悉正則的我們直到,這是匹配.php結尾的URL,用來解析php文件。里面的root也是一樣,用來表示虛擬主機的根目錄。 fast_pass鏈接的是php-fpm 的地址,之前我們也搭建過。其他幾個參數我們以后再說。 location 還有其他用法,等講到實例的時候,再看吧。 upstream 模塊 upstream 模塊負債負載均衡模塊,通過一個簡單的調度算法來實現客戶端IP到后端服務器的負載均衡。我先學習怎么用,具體的使用實例以后再說。 upstream iyangyi.com{ ip_hash; server 192.168.12.1:80; server 192.168.12.2:80 down; server 192.168.12.3:8080 max_fails=3 fail_timeout=20s; server 192.168.12.4:8080; } 在上面的例子中,通過upstream指令指定了一個負載均衡器的名稱iyangyi.com。這個名稱可以任意指定,在后面需要的地方直接調用即可。 里面是ip_hash這是其中的一種負載均衡調度算法,下面會著重介紹。緊接著就是各種服務器了。用server關鍵字表識,后面接ip。 Nginx的負載均衡模塊目前支持4種調度算法: weight 輪詢(默認)。每個請求按時間順序逐一分配到不同的后端服務器,如果后端某臺服務器宕機,故障系統被自動剔除,使用戶訪問不受影響。weight。指定輪詢權值,weight值越大,分配到的訪問機率越高,主要用于后端每個服務器性能不均的情況下。 ip_hash。每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個后端服務器,有效解決了動態網頁存在的session共享問題。 fair。比上面兩個更加智能的負載均衡算法。此種算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據后端服務器的響應時間來分配請求,響應時間短的優先分配。Nginx本身是不支持fair的,如果需要使用這種調度算法,必須下載Nginx的upstream_fair模塊。 url_hash。按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,可以進一步提高后端緩存服務器的效率。Nginx本身是不支持url_hash的,如果需要使用這種調度算法,必須安裝Nginx 的hash軟件包。 在HTTP Upstream模塊中,可以通過server指令指定后端服務器的IP地址和端口,同時還可以設定每個后端服務器在負載均衡調度中的狀態。常用的狀態有: down,表示當前的server暫時不參與負載均衡。 backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。 max_fails,允許請求失敗的次數,默認為1。當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤。 fail_timeout,在經歷了max_fails次失敗后,暫停服務的時間。max_fails可以和fail_timeout一起使用。 注意 當負載調度算法為ip_hash時,后端服務器在負載均衡調度中的狀態不能是weight和backup。 參考文件: http://blog.csdn.net/xifeijian/article/details/20956605 http://www.360doc.com/content/13/1114/12/7694408_329125489.shtml http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html http://ixdba.blog.51cto.com/2895551/790611 http://freeloda.blog.51cto.com/2033581/1288553
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看