20200103 Nginx服務器配置

域名訪問----->nginx----->ip地址和端口

1、通過域名訪問 還是通過ip進行訪問。ip地址訪問通,但是域名訪問不同,說明端口沒映射。

2、前端通過域名訪問後端服務,在ngixn層域名映射成ip地址。

3、以後可以試試ip地址是否訪問通? ip地址是否訪問通?

 

nginx.conf配置文件

Nginx配置文件主要分成四部分:main(全局配置)、server(主機配置)、upstream(上游服務器配置,主要爲反向代理、負載均衡相關配置)和location(URL匹配特定位置後的配置),每部分包含若干個指令。

1) main部分設置的指令將影響其它所有部分的設置;

2) server部分的指令主要用於指定虛擬主機域名、IP和端口;

3) upstream的指令用於設置一系列的後端服務器,設置反向代理及後端服務器的負載均衡;

4) location部分用於匹配網頁位置(比如,根目錄“/”,“/images”,等等)。他們之間的關係式:server繼承main,location繼承server;upstream既不會繼承指令也不會被繼承。它有自己的特殊指令,不需要在其他地方的應用。

 

公司項目網絡請求通過Nginx的訪問順序:

1)Nginx啓動後,默認監聽80端口;

2)根據正則表達式攔截項目裏的所有網絡請求(Location匹配)。 

3)通過proxy_pass找到要訪問的上游服務器地址進行訪問(upstream配置)。

 

upstream配置(上游服務器配置)

Nginx可以配置代理多臺服務器,當一臺服務器宕機之後,仍能保持系統可用。

upstream節點

1. 在http節點下,添加upstream節點。

upstream linuxidc {

      server 10.0.6.108:7080;

      server 10.0.0.85:8980;

}

2. 將server節點下的location節點中的proxy_pass配置爲:http:// + upstream名稱,即“http://linuxidc”.

location / {

            root  html;

            index  index.html index.htm;

            proxy_pass http://linuxidc;

}

upstream按照輪詢(默認)方式進行負載,每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除(對應的服務器)。雖然這種方式簡便、成本低廉。但缺點是:可靠性低和負載分配不均衡。適用於圖片服務器集羣和純靜態頁面服務器集羣。

upstream還有其它的分配策略:

1) weight(權重) 指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。如下所示,10.0.0.88的訪問比率要比10.0.0.77的訪問比率高一倍。

upstream linuxidc{

      server 10.0.0.77 weight=5;

      server 10.0.0.88 weight=10;

}

2) ip_hash(訪問ip)

    每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。

upstream favresin{

      ip_hash;

      server 10.0.0.10:8080;

      server 10.0.0.11:8080;

}

3) fair(第三方)按後端服務器的響應時間來分配請求,響應時間短的優先分配。與weight分配策略類似。

upstream favresin{      

      server 10.0.0.10:8080;

      server 10.0.0.11:8080;

      fair;

}

 

 

Nginx的基本配置

1、Nginx配置文件

Nginx服務器自帶的配置文件:conf文件夾------>nginx.conf

Nginx的安裝目錄:/usr/local/nginx-1.12.1/conf/進去查看配置文件。

進入conf文件夾:cd conf(查看自帶的配置文件的內容)

/usr:這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下。

編輯文件,使用vi nginx.config

配置文件的基本格式:

worker_processes  1;

events {

    worker_connections  1024;

}

http{

//http裏面可以有多個server的配置。

server{}

server{ }

}

 

2、Nginx虛擬主機的配置

爲了是每個服務器可以共更多用戶訪問,可以將一個服務器分爲很多虛擬的子服務器,每個子服務器是相互獨立的;這些子服務器是根據虛擬化技術分離出來的,這樣一臺服務器就可以虛擬成很多子服務器,我們把子服務器叫做虛擬主機。我們搭建好Nginx服務器之後,此時只要一臺Nginx服務器,這時如果我們對這臺服務器進行虛擬主機配置,就可以將一個Nginx服務器分割成多臺對的子服務器。

1)配置虛擬主機需要哪些步驟

Nginx中配置虛擬主機有兩步:配置IP地址;綁定ip地址與虛擬主機。

2)IP地址的配置

ifconfig是linux中用於顯示或配置網絡設備(網絡接口卡)的命令,可以看到當前主機的ip地址。

SU:( Switch user切換用戶),可讓一個普通用戶切換爲超級用戶或其他用戶,並可臨時擁有所切換用戶的權限,切換時需輸入欲切換用戶的密碼;進入root模式。

訪問ip地址的時候,自動轉向虛擬主機;讓ip地址與虛擬主機進行綁定。

加載配置文件:在別的配置文件中進行配置,然後加載。

如何創建新的空白文件touch xnzj.conf

vi xnzj.conf :編輯虛擬主機這個文件

訪問IP地址的時候,進行跳轉到默認的目錄。監聽某個ip地址

這臺虛擬主機的日子文件放在哪裏。

3)Nginx虛擬主機的配置

 

3、Nginx日誌文件配置

1)Nginx日誌文件格式的配置

Nginx服務器在運行的時候,會有各種操作;這些關鍵的操作信息會記錄到文件中,這些文件叫做日誌文件。日誌文件的記錄是有格式的,我們可以按照系統默認的格式去記錄,也可以按照我們自定義的格式去記錄。我們可以使用log_format指令來設置Nginx服務器的日誌文件的記錄格式。日誌文件的信息是如何排列的。

2)Nginx日誌文件存儲路徑的配置

日誌文件在記錄的時候,需要存儲到磁盤上,存儲的路徑是可以配置的。我們通過

access_log指令來配置Nginx的日誌文件的存儲路徑。

Nginx的安裝目錄

access_log logs/access.log main;

不記錄access_log方法:access_log off

3)Nginx日誌文件的切割(定期對Nginx文件進行切割,按照天對日誌文件進行切割)

爲了使Nginx的日誌文件存儲更合理、有序、我們需要將日誌文件進行分開存儲;比如我們可以按照時間來分開,今天的日誌文件存儲到一個文件中,明天的日誌文件存儲到一個另一個新的文件夾中,這時候就用到日誌文件的切割操作。

 

4、Nginx緩存配置

1)當我們在瀏覽器中瀏覽某網頁時,我們會把該網頁上的一些信息存儲到本地,當我們第二次瀏覽該網頁的時候,這個網頁上的某些信息就可以從本地加載,這樣速度就會快很多。存儲到本地的這些信息,我們稱爲緩存;但是緩存文件過多的時候,緩存文件會非常大,影響我們正常的上網活動,故而緩存需要定期清理。

用戶訪問的只是某一個虛擬主機。

2)壓縮功能配置:通過gzip壓縮技術,可以使原來的網頁內容大小壓縮成原來的30%,這樣用戶在訪問網頁的時候,由於傳輸的內容比原來內容小,所以訪問速度就會快很多。

 

服務器軟件與服務器硬件配合,才能形成一個完整的服務器,而Nginx就是一個服務器軟件。

服務器硬件---->操作系統---->服務器軟件---->應用程序。

將應用程序放在Nginx服務器上,然後發佈應用,讓其他人進行訪問。

Nginx一個高性能的跨平臺服務器,支持高併發;Apache服務器並不支持高併發。Nginx支持多種操作系統.

 

Nginx的功能:

Nginx時一個高性能的HTTP和反向代理服務器,同時也是一個郵件代理服務器(發佈應用程序,實現負載均衡,作爲郵件服務器實現郵件收發)。

負載均衡:有海量用戶訪問服務器時,爲了減少服務器壓力,需要將用戶引入各服務器,分擔服務器的壓力。好處是:加快響應速度;降低服務器崩潰的機率。

反向代理服務器(負載均衡服務器)---->應用服務器集羣

Nginx服務器並不處理用戶的請求,只是進行請求分發,將請求分發到應用服務器中進行處理。

Nginx的優點:實現高併發;內存消耗少;部署簡單;成本低。

 

 

 

location是Nginx配置中的一個指令,用於URL匹配.在這個location中,所配置的每個指令將會啓動不同的上游服務器去完成相應的工作.

 

負載均衡模塊用於從”upstream”指令定義的後端主機列表中選取一臺主機。nginx先使用負載均衡模塊找到一臺主機,再使用upstream模塊實現與這臺主機的交互.

 

Nginx的默認端口爲80,可以不寫,http://localhost/  直接通過localhost進行訪問,進入index.html(Nginx的歡迎頁面)。

 

雙擊啓動Nginx服務器,直接在瀏覽器中進行訪問:http://localhost/

適合Nginx的操作系統是Linux。

修改Nginx配置文件後,要重新啓動Nginx才行。

 

在 Linux 系統下搭建Nginx服務器,使用免安裝版的軟件。

Tomcat的默認端口爲8080。

 

#低權限的用戶,可以大大提高系統的安全性。
#user  nobody;  
#工作衍生進程數 代表cpu的核數是1個 cpu的核數和硬件有關係。
worker_processes  1;
 
#設置錯誤文件存放的路徑;nginx服務器出現了錯誤,會記錄到日誌文件中。
#可以取消註釋,錯誤信息,注意信息
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#設置pid存放的路徑:pid是系統控制中重要的文件(主要用於對nginx服務器進行控制)。
#nginx的控制文件;去掉井號,代碼就會生效。
pid    logs/nginx.pid;
 
#設置最大連接數,支持1024個連接數
events {
  use epoll;
  worker_connections 2048;
}
 
#http協議,和網頁相關的內容,http裏面包含多個server。
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 logs/access.log main;
 
  sendfile    on;
  #tcp_nopush   on;
 
  keepalive_timeout 65;
 
  #gzip壓縮功能設置
  #開啓gzip壓縮,對用戶訪問的網頁,是否進行壓縮處理。文件縮小,傳輸速度快。
  gzip on;
  gzip_min_length 1k;
  gzip_buffers  4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 6;
  gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
  gzip_vary on;
  
  #http_proxy 設置
  client_max_body_size  10m;
  client_body_buffer_size  128k;
  proxy_connect_timeout  75;
  proxy_send_timeout  75;
  proxy_read_timeout  75;
  proxy_buffer_size  4k;
  proxy_buffers  4 32k;
  proxy_busy_buffers_size  64k;
  proxy_temp_file_write_size 64k;
  proxy_temp_path  /usr/local/nginx/proxy_temp 1 2;
 
 # 設定負載均衡後臺服務器列表 
  upstream backend { 
       #ip_hash; 
       server  192.168.10.100:8080 max_fails=2 fail_timeout=30s ; 
       server  192.168.10.101:8080 max_fails=2 fail_timeout=30s ; 
  }
 
 #很重要的虛擬主機配置
  server {
	#對某個端口進行監聽
    listen    80;
    server_name itoatest.example.com;
    root  /apps/oaapp;
 
    charset utf-8;
    access_log logs/host.access.log main;
 
    #對 / 所有做負載均衡+反向代理
    location / {
      root  /apps/oaapp;
      index index.jsp index.html index.htm;
 
      proxy_pass    http://backend; 
      proxy_redirect off;
      # 後端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
       
    }
 
    #靜態文件,nginx自己處理,不去backend請求tomcat
    location ~* /download/ { 
      root /apps/oa/fs; 
       
    }
    location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$  
    {  
      root /apps/oaapp;  
      expires   7d; 
    }
    location /nginx_status {
      stub_status on;
      access_log off;
      allow 192.168.10.0/24;
      deny all;
    }
 
    location ~ ^/(WEB-INF)/ {  
      deny all;  
    }
    #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 指令開始
}

 

main全局配置

woker_processes 2

在配置文件的頂級main部分,worker角色的工作進程的個數,master進程是接收並分配請求給worker處理。這個數值簡單一點可以設置爲cpu的核數grep ^processor /proc/cpuinfo | wc -l,也是 auto 值,如果開啓了ssl和gzip更應該設置成與邏輯CPU數量一樣甚至爲2倍,可以減少I/O操作。如果nginx服務器還有其它服務,可以考慮適當減少。

worker_cpu_affinity

也是寫在main部分。在高併發情況下,通過設置cpu粘性來降低由於多CPU核切換造成的寄存器等現場重建帶來的性能損耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。

worker_connections 2048

寫在events部分。每一個worker進程能併發處理(發起)的最大連接數(包含與客戶端或後端被代理服務器間等所有連接數)。nginx作爲反向代理服務器,計算公式 最大連接數 = worker_processes * worker_connections/4,所以這裏客戶端最大連接數是1024,這個可以增到到8192都沒關係,看情況而定,但不能超過後面的worker_rlimit_nofile。當nginx作爲http服務器時,計算公式裏面是除以2。

use epoll

寫在events部分。在Linux操作系統下,nginx默認使用epoll事件模型,得益於此,nginx在Linux操作系統下效率相當高。

 

http服務器

sendfile on開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,減少用戶空間到內核空間的上下文切換。對於普通應用設爲 on,如果用來進行下載等應用磁盤IO重負載應用,可設置爲off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。

keepalive_timeout 65 : 長連接超時時間,單位是秒,涉及瀏覽器的種類、後端服務器的超時設置、操作系統的設置等。長連接請求大量小文件的時候,可以減少重建連接的開銷,但假如有大文件上傳,65s內沒上傳完成會導致失敗。如果設置時間過長,用戶又多,長時間保持連接會佔用大量資源(每個用戶都要保持長連接)。

send_timeout : 用於指定響應客戶端的超時時間。這個超時僅限於兩個連接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關閉連接。

 

代理模塊

這個模塊實現的是nginx作爲反向代理服務器的功能

client_max_body_size 10m允許客戶端請求的最大單文件字節數。如果有上傳較大文件,請設置它的限制值.

proxy_connect_timeout 60 nginx跟後端服務器連接超時時間(代理連接超時)

proxy_read_timeout 60連接成功後,與後端服務器兩個成功的響應操作之間超時時間(代理接收超時)

 

壓縮模塊 http_gzip

gzip on : 開啓gzip壓縮輸出,減少網絡傳輸

gzip_min_length 1k:設置允許壓縮的頁面最小字節數,頁面字節數從header頭得content-length中進行獲取。默認值是20。建議設置成大於1k的字節數,小於1k可能會越壓越大。

gzip_http_version 1.0 : 用於識別 http 協議的版本,早期的瀏覽器不支持 Gzip 壓縮,用戶就會看到亂碼,所以爲了支持前期版本加上了這個選項,如果你用了 Nginx 的反向代理並期望也啓用 Gzip 壓縮的話,由於末端通信是 http/1.0,故請設置爲 1.0。

gzip_comp_level 6 : gzip壓縮比,1壓縮比最小處理速度最快,9壓縮比最大但處理速度最慢(傳輸快但比較消耗cpu)

gzip_types :匹配mime類型進行壓縮,無論是否指定,”text/html”類型總是會被壓縮的。

gzip_proxied any : Nginx作爲反向代理的時候啓用,決定開啓或者關閉後端服務器返回的結果是否壓縮,匹配的前提是後端服務器必須要返回包含”Via”的 header頭。

 

server虛擬主機

http服務上支持若干虛擬主機。每個虛擬主機一個對應的server配置項,配置項裏面包含該虛擬主機相關的配置。每個server通過監聽地址或端口來區分。

1)listen監聽端口,默認80,小於1024的要以root啓動。可以爲listen *:80、listen 127.0.0.1:80等形式。

2)server_name服務器名,如localhost、www.example.com,可以通過正則匹配(用於監聽要訪問的主機名)。

 

location

http服務中,某些特定的URL對應的一系列配置項。

root  /var/www/html 定義服務器的默認網站根目錄位置。如果locationURL匹配的是子目錄或文件,root沒什麼作用,一般放在server指令裏面或/下。

index index.jsp index.html index.htm 定義路徑下默認訪問的文件名,一般跟着root放

proxy_pass http:/backend 請求轉向名稱爲backend服務器列表,即反向代理,對應upstream負載均衡器。也可以proxy_pass http://ip:port。

 

發佈了303 篇原創文章 · 獲贊 104 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章