1. 程式人生 > >Nginx中介軟體使用整理

Nginx中介軟體使用整理

nginx是一個高效能的HTTP反向代理伺服器,(靜態資源,服務轉發)也是一個IMAP/POP3/SMTP伺服器,最出名的就是反向代理,簡答理解就是作用在伺服器端,大概流程 客戶端---->訪問nginx的虛擬伺服器---->找到真實的伺服器---->在返回給客戶端(是否還需要通過nginx待驗證)

以鑫E家微信報價展示為例:(反向代理) 所有的客戶端先訪問到nginx 在通過nginx的配置轉發到真實的伺服器,因此作用於伺服器端(此處用nginx是因為我們虛擬機器是特別的區域網,外網需要訪問需要使用特定的埠,當然我我們可以在外網發請求時候直接配置該埠,那麼我們服務端就得改成此埠,埠又具有唯一性,其他服務就不能使用此埠,所以用ngin作用在虛擬機器內統一使用8002埠代理任何服務)

背景:在外網(虛擬機器)環境下開發前端vue專案,需傳送請求到虛擬機器內的服務端,此時可以用到nginx的反向代理,當然也是侷限於特別的網段,特定的埠。同時 vue專案是基於node的,可以使用命令啟動,不需要放在伺服器才能訪問。

 在服務端的IP下配置啟動nginx來反向代理,也就是在服務端的同一個IP下,配置如下:

#user  nobody;# nginx的啟動使用者

worker_processes  1;

 #代表nginx的工作程序  nginx啟動有兩種程序  一種是主程序 master processes 一種就是worker                            processes,

 這裡配置1 代表作業系統啟動1個工作程序 (預設啟動一個主程序) 主程序是用來協調工作程序幹活的 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid; #主程序的程序號檔案

events {#工作模式

    worker_connections  1024; #單個工作程序的最大連線數目

}

http {

    include       mime.types;  #定義了所有的檔案型別 比如 text/html 對應html htm , image/png 對應了png  , 代表了資源的媒體型別 當我們請求請求html的時候 nginx會在返回的頭資訊中加入Content_Type :text/html,告訴瀏覽器是什麼型別檔案,然後瀏覽器來選擇操作。

    default_type  application/octet-stream;#預設的檔案型別 瀏覽器會來下載該檔案

     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '"$request_body" $body_bytes_sent $status ';

                      '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

    #日誌檔案的內容    $remote_addr代表客戶端的ip地址,當通過了代理之後該 地址就變成了代理地址

                                 $remote_user 記錄客戶端認證的請求nginx的使用者 如果沒開啟則沒有 

                                 $time_local 記錄時間時區

                                 $request 記錄http請求

                                 $http_refer 記錄請求是從哪個頁面的連結過來 在www.baiducom 發起圖片訪問  就是百度

                                 $http_user_agent 代表瀏覽器的版本資訊

                                  $http_x_forwarder_for 當我們通過代理的時候會記錄該代理地址

                                  比如 客戶端IP ->proxyIP1  就是變成 客戶端IP+proxyIP1 以此類推

     sendfile        on;

      #sendfile 代表高效檔案讀取

     keepalive_timeout  65;

        #客戶端服務端超時時間

    client_max_body_size 500m;  

   #此處只配置了一臺真實的伺服器(服務端專案所在),nginx預設是輪詢的方式,Nginx可以配置代理多臺伺服器,當一臺伺服器宕機之後,仍能保持系統可用 ,當然還有其他的分配策略,可自行百度

    upstream serverProxy { 

    server 192.168.10.196:8080;

    }

#server 就是服務,這裡其實是虛擬服務,listen就是虛擬服務的埠,server_name就是虛擬服務的訪問路徑, location / 就是請求的規則路徑,預設回到根目錄的預設頁面,就是我們訪問localhost:9999的是時候會訪問

#root下的index.html ,當我們訪問localhost:9999/weixin/時候,也就是當我們在某頁面請求localhost:9999/weiixn/xxx.do的時候會被轉發到serverProxy(192.168.10.196:8080/weixin/xxx.do

    server {

        listen       9999;

        server_name  localhost;

        access_log  logs/host.access.log main;

        location / {

            root   D:/vueWorkSpace2/mint-ui-example/dist;

            index  index.html;

        }

    #反向代理/mobile/下的.do請求到遠端伺服器==》192.12.35.192:8008張成軒

          location /weixin/ {

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

    #本地.do模擬資料服務,

    server {

        listen       9224;

        server_name  dataServer;

        access_log  logs/data.access.log main;

        #nginx預設不可以post取靜態檔案,會返回405狀態

        #此處修改post請求.json(.do)的響應狀態為200

        #以json形式返回

        location ~ (.*\.json) {

            root  D:/vx/VX-NJYH/sample/data/;

            default_type application/json;    

            error_page 405 =200 $1;

        }

    }

}