執行個體詳解nginx是用什麼方式處理請求的

來源:互聯網
上載者:User
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,可以使用精確的名稱、萬用字元名稱或Regex定義;當你在外網訪問一個請求連結時,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,但是因為並沒有開通網域名稱服務 (DNS),所以直接在用戶端使用這2個網域名稱來發送請求,是會失敗的,所以為了能夠使用這兩個假網域名稱正常發送請求,要先在用戶端主機配置一下,步驟如下:

開啟hosts檔案,添加如下兩行即可(因為映射ip地址相同,所以把兩個網域名稱加在一行也可以,用空格隔開)

3.測試

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

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

說明nginx根據訪問連結網域名稱的不同匹配到了相應的server伺服器,然後再根據location路徑,路由到對應的服務

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.