實例詳解nginx是用什麼方式處理請求的

无忌哥哥
發布: 2023-04-03 06:46:02
原創
1510 人瀏覽過

1.首先2個server區塊配置如下

server {
       listen   80;
       server_name  hanmk.com;
       location / {
       root /tmp/data/;
       autoindex on;
      }
   }
    server {
        listen    80 default_server;
        server_name demo.com ;
        location / {   # tomcat首页
        proxy_pass http://localhost:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       location /jenkins {                #tomcat部署jenkins
              proxy_pass  http://127.0.0.1:8080;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
       location /ApprPhD {                #nodeJs服务器
              proxy_pass http://192.168.XXX.XXX:3030;
              proxy_set_header        Host $host;
              proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
              proxy_set_header REMOTE-HOST $remote_addr;
              proxy_connect_timeout   90;
              proxy_send_timeout      90;
              proxy_read_timeout      90;
              proxy_buffer_size       4k;
              proxy_buffers           4 32k;
              proxy_busy_buffers_size 64k;
              proxy_temp_file_write_size 64k;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#获取代理者的真实ip
              proxy_redirect          off;
       }
    }
登入後複製

說明:

第1個server中,把服務指向了伺服器/tmp/data/路徑下的靜態檔案;

第2個server中,把服務指向了3個路由虛(一個路由指向擬機本地部署的tomcat首頁,一個指向tomcat下部署的jenkins,一個指向另一台虛擬機器上部署的應用)

兩個server中設定的監聽連接埠都是80(也是為了更好地查看測試效果)

server_name指定(虛擬主機)伺服器名稱,一般會配置網域名稱(example. org ,www.example.org,可以使用精確的名稱、通配符名稱或正則表達式定義;當你在外網訪問一個請求鏈接時,nginx會根據你填寫的主機名稱來匹配是轉發到server1還是server2)

同樣為了更好地查看測試效果,我在server_name中填寫域名,而不是填寫虛擬機真實的ip或者localhost(因為ip位址都是虛擬機ip,填寫ip位址的話,看不出來nginx是如何轉送請求的)(另外,如果只有一個server的話,server_name其實沒有填寫的必要,因為最終都會轉送到該server下的伺服器,我試了下,只要埠正確,都可以轉送成功,內部原理還不清楚。。)

server1中server_name填寫hanmk.com

server2中server_name填寫demo.com

完成上述設定後,需要重新載入一下設定檔nginx .conf

2.設定客戶端的hosts檔案

在第一步驟中分別在server_name中設定了hanmk.com和demo.com,但因為並沒有開通網域名稱服務,所以直接在客戶端使用這2個網域來發送請求,是會失敗的,所以為了能夠使用這兩個假域名正常發送請求,要先在客戶端主機配置一下,步驟如下:

實例詳解nginx是用什麼方式處理請求的

#開啟hosts文件,新增如下兩行即可(因為映射ip位址相同,所以把兩個網域加在一行也可以,用空格隔開)

實例詳解nginx是用什麼方式處理請求的

#3.測試

(1)使用http://hanmk.com/傳送請求,存取的是虛擬機器/tmp/data/路徑下的靜態檔案

實例詳解nginx是用什麼方式處理請求的

(2)分別造訪http://demo.com/、http://demo.com/jenkins、http://demo.com/ApprPhD/index,結果如下

實例詳解nginx是用什麼方式處理請求的

實例詳解nginx是用什麼方式處理請求的

實例詳解nginx是用什麼方式處理請求的

# 說明nginx根據存取連結網域的不同配對到了對應的server伺服器,然後再根據location路徑,路由到對應的服務

以上是實例詳解nginx是用什麼方式處理請求的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!