ngnix配置反向代理

下圖是我們要設計的服務器集羣結構,所有的請求都經過Nginx,如果是靜態資源的請求,則直接訪問Ngnix的本地磁盤(或者NAS),其餘的動態資源請求均由Nginx轉發到後端服務器。
在這裏插入圖片描述

OpenResty安裝

Nginx官網提供源碼,選擇想要加載的模塊,下載後需要手動編譯。如果要增刪模塊,需要在編譯階段指定,比較複雜。推薦直接使用OpenResty框架,該框架已經將Nginx和LuaJIT的相關配置打包,且集成了大部分Nginx常用特性,比如反向代理、Redis等。
參考官網文檔:
https://openresty.org/en/installation.html
按上述文檔操作後,OpenResty會安裝在/usr/local/openresty目錄下。該目錄下nginx/conf目錄存放Ngnix的所有配置;ngnix/html目錄放置Ngnix的html文件。

啓動nginx

在/usr/local/openresty/nginx目錄下,執行

sbin/nginx -c conf/nginx.conf

默認是後臺加載啓動的方式,會啓動在conf/nginx.conf指定的端口。此時就可以通過瀏覽器訪問了,可以看到Welcome to OpenResty頁面。

按照我們之前的架構部署,當請求靜態資源時,路由到本地磁盤路徑;其餘的所有請求都使用動態代理,訪問後端server。

部署前端資源

打包前端資源上傳到服務器。進入nginx目錄下的html下,然後新建resources目錄用於存放前端靜態資源。
默認配置中,Ngnix會將所有路徑的訪問都轉發到html路徑。我們需要修改conf/nginx.conf,設置指向resources目錄下的location可以訪問對應的html下的靜態資源文件。
將server中

location / {
	root html;
	index index.html index.htm
}

修改爲

location /resources/ {
	alias /usr/local/openresty/nginx/html/resources/;
	index index.html index.htm
}

至此,我們的靜態資源訪問可以指向Ngnix對應的路徑。

配置反向代理

修改conf/nginx.conf,設置upstream server,指定後端服務器的地址。
我的兩臺服務器地址分別爲172.22.97.43、172.22.97.42。weight代表權重,我現在配置的輪循比例爲1:1。

upstream backend_server {
    server 172.22.97.43 weight=1;
    server 172.22.97.42 weight=1;
}

剛纔我們指定了靜態資源的路由路徑,除此之外所有請求我們都當做動態資源,在server中增加

location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $http_host:$proxy_port;
    proxy_set_header X-Real_IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

開啓tomcat access log

爲了確保Nginx確實訪問到了後端server,我們可以查看後端server的Tomcat日誌。只需要在SpringBoot項目的配置文件中添加相關配置。在線上環境中,修改外掛配置文件即可。

server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.directory=/var/www/project/tomcat  ## 你的項目目錄中新增/tomcat
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D

需要注意的配置

  1. 前端接入的超時時間一般需要大於反響代理的服務超時時間,因爲數據流是通過nginx轉發,若前端超時時間小於後端超時時間則會出現後端服務還未超時,前端就超時的情況。
  2. 配置長連接keepalive以解決網絡建連的問題,提高路由性能。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章