1. 程式人生 > >Nginx反向代理轉發tomcat

Nginx反向代理轉發tomcat

最近剛接觸nginx,在網上查閱了相關資料,看到最多的形容nginx的詞就是反向代理,反向代理是什麼了?一直都不是很理解,於是在網上查了反向代理,下面給出百度百科對反向代理的解釋。

百度百科解釋:反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。

通過上面的解釋很容易理解nginx反向代理的意思,也就是說nginx就相當於代理伺服器。客戶端發出請求,並不是直接被tomcat伺服器接收處理,而是要先經過nginx,nginx再轉發給tomcat伺服器;tomcat處理完成返回結果後,也是先經過nginx,nginx再返回客戶端。在整個過程中,nginx貌似充當了真正的伺服器,其實並不是,nginx只是起到了轉發的作用。

根據反向代理的特性,我們可以把不需要伺服器處理的靜態資源(HTML,JS,CSS等)直接讓nginx處理,JSP等讓伺服器處理,這樣就減輕了伺服器的壓力。

下面來實現一下利用nginx代理轉發tomcat的例項:

1.環境配置

安裝tomcat,tomcat安裝很簡單,直接壓縮包解壓就行,這裡就不再細說。

2.執行環境

nginx安裝完成並啟動過後,在瀏覽器直接輸入Linux系統的IP地址,即可訪問,如下所示:


3.配置解析

看到這是不是很好奇,為什麼直接輸入IP就可以進入nginx,是在哪配置的了?看一下nginx的配置檔案,一般預設在nginx資料夾下有個conf資料夾,裡面有個nginx.conf,打開發現裡面有一段如下配置:


這段程式碼是在配置檔案中的server中,一個server相當於一個代理伺服器,可以配置多個server。

裡面幾個屬性的意思分別是:

listen:代表當前代理伺服器的訪問埠號,預設是80埠。如果要配置多個server,這裡的預設埠需要改變,要不然系統不知道進入哪個代理服務。

server_name:表示代理服務需要轉發的地址,預設是localhost。

location:表示匹配客戶端傳送請求的路徑,這裡“/”代表所有請求的路徑都能匹配。

root:表示請求別匹配到後,會在這個資料夾內尋找相應的檔案,root對後面靜態資源的處理很重要。

index:如果代理沒有指定主頁,將預設進入index配置下尋找主頁,可以配置多個,第一個主頁找不到,訪問第二個,以此類推。

error_page:代表發生錯誤後進入的相關錯誤頁面,下面的location也是處理錯誤的相關配置。

PS:剛剛說的nginx.conf路徑在安裝的時候是可以通過–conf-path=配置的,我在安裝的時候就指定了“/etc/nginx/nginx.conf” 這個路徑。但是我還在預設路徑下面找配置檔案,確實能找到,但是nginx服務用的並不是這個,而是我安裝時指定的配置檔案。所以在後面的操作中就悲劇了,怎麼改配置檔案都沒反應,一開始以為什麼地方配置的不對,浪費了好幾個小時的時間,所以在此提醒大家一下。題外話,接下來說正事。

3.配置轉發tomcat

轉發tomcat的配置很簡單,只需要在原來的配置上面修改兩個地方,如下:


這裡配置的proxy_pass屬性表示代理路徑,nginx可以直接轉發到該連結。

PS:只配置了一個server情況下,server_name可有可無,系統不會載入該配置。有多個server情況下,server_name必須要配置,nginx服務會根據該配置匹配。

修改完配置過後,別急著重啟nginx服務,怎麼?還有東西要配置? 當然不是,nginx支援熱部署,也就是修改配置檔案過後,不需要重啟服務生效,只需要讓nginx重新載入一下即可,很方便吧。如果在載入配置之前想檢查一下配置檔案是否有語法錯誤,可以輸入“nginx -t”來檢查錯誤。如下:


接下來重新整理剛剛訪問nginx的頁面,發現訪問的頁面已經變成我們要轉發的tomcat了,頁面如下:


頁面效果和我們直接輸入“http://172.16.21.92:8080/”的效果一樣。

4.動、靜資源分離

上面說了根據nginx反向代理的特性,可以實現客戶端訪問靜態資源時,不請求tomcat伺服器,減少伺服器壓力。要想實現該功能同樣的需要配置nginx.conf的server配置,如下:


上面程式碼新加了一個location配置,用於過濾靜態檔案,當客戶端請求這些靜態檔案時,nginx會轉發到“/usr/local/ROOT/”資料夾下(ROOT資料夾是從tomcat的webapps裡面拷貝出來的),從而不需要請求伺服器。

這時再重新整理訪問nginx的頁面,發現頁面沒有變化,但是點選tomcat首頁"Security Considerations HOW-TO"連線,發現報404錯誤,如下圖:


這時為什麼了? 原因是這個html頁面是在tomcat 的webapps裡面的docs資料夾下,但是我們配置靜態資源轉發路徑是到ROOT資料夾下面,nginx找不到HTML檔案,所以就報404錯誤。同時也驗證了配置的靜態資源與伺服器分離是沒有問題的。

相關推薦

Nginx反向代理轉發tomcat

最近剛接觸nginx,在網上查閱了相關資料,看到最多的形容nginx的詞就是反向代理,反向代理是什麼了?一直都不是很理解,於是在網上查了反向代理,下面給出百度百科對反向代理的解釋。 百度百科解釋:反向代理(Reverse Proxy)方式是指以代理伺服器來接受intern

Nginx反向代理tomcat日誌獲取真實IP

director div tom log sna tomcat XML localhost 如果 對於nginx+tomcat這種架構,如果後端tomcat配置保持默認,那麽tomcat的訪問日誌裏,記錄的就是前端nginx的IP地址,而不是真實的訪問IP。因此,需

Nginx反向代理轉發Host設置

logs real gin host cat 請求 nginx反向代理 war http 默認情況下反向代理是不會轉發請求中的Host頭部,如果需要轉發,則需要配置紅色字體表示的選項參數。 location /t02 { proxy_set

【本人禿頂程式設計師】nginx反向代理轉發apache配置 之 cookie去哪兒了?

←←←←←←←←←←←← 我都禿頂了,還不點關注! 在公司接手了個微信專案,由於微信環境下訪問網站需要使用對外開放的域名,所以有相關問題,都是直接運維同事幫忙處理。 原理是這樣: 方案一: 將域名解析指向測試伺服器的地址; 開放相關埠訪問許可權; 方案二: 將域名解析指向

詳解nginx反向代理+SwitchHost+Tomcat繫結域名配置總結

首先說下具體請求流程: 假設客戶端A--------》瀏覽器url請求域名--------》域名被host解析對應的IP--------》到對應IP的伺服器--------》先被nginx反向代理攔截

Nginx 反向代理配合Tomcat部署web專案

ps: nginx是一個高效能的 Web 和反向代理伺服器, 它具有有很多非常優越的特性 作為 Web 伺服器:相比 Apache,Nginx 使用更少的資源,支援更多的併發連線,體現更高的效率,這點使 Nginx 尤其受到虛擬主機提供商的歡迎。能夠支援高達

Nginxnginx反向代理tomcat負載均衡

前言         nginx反向代理大大節省了伺服器開支,通過配置多個虛擬主機,使多個服務共同的使用虛擬的80埠。 首先,某個伺服器上有多個tomcat服務,分別佔用一個埠。先看配置檔案。 tomcat服務1 upstream sina{ server 192

nginx反向代理(proxy_pass)tomcat導致session失效的問題解決

 Nginx反向代理tomcat,很是方便,但是也有些細節的問題需要注意;今天遇到了這樣一個問題,tomcat中路徑“host/web1”,nginx中直接“host/”代理,這時候session就無法正常進行了。 問題描述: 登入後. 跳轉http://127.0.0

nginx 反向代理使tomcat日誌中無法獲取真實IP-解決辦法

       使用Nginx作為反向代理時,Tomcat的日誌記錄的客戶端IP就不在是真實的客戶端IP,而是Nginx代理的IP。要解決這個問題可以在Nginx配置一個新的Header,用來儲存$re

同一伺服器下配置多域名,去掉Tomcat埠號,Nginx反向代理轉發

1. 開啟nginx,資源管理器檢視開啟是否成功,會有兩個nginx.exe程序,瀏覽器輸入127.0.0.1可以訪問到nginx歡迎介面。 2. 在nginx配置檔案nginx.conf中配置多個虛擬主機,即server,用於存放不同的域名(server_name),虛擬

Linux中Nginx反向代理下的tomcat集群

class html 不能 ++ 配置文件 ima png -1 index Nginx具有反向代理(註意和正向代理的區別)和負載均衡等特點。 這次Nginx安裝在 192.168.1.108 這臺linux 機器上。安裝Nginx 先要裝openssl庫,gc

nginx證書制作以及配置https並設置訪問http自動跳轉https(反向代理轉發jboss)

app ast mime with cati permanent bsp location admin nginx證書制作以及配置https並設置訪問http自動跳轉https 默認情況下ssl模塊並未被安裝,如果要使用該模塊則需要在編譯時指定–with

nginx 反向代理 tomcat (https、虛擬主機)

nginx背景: 有一個JSP開發的網站,需要放在tomcat裏面運行,考慮到tomcat處理http請求不是那麽強,計劃前端添加一個nginx作為反向代理,並且提供https服務,並且通過虛擬主機開代理到指定域名的服務。 我們的域名是www.wzlinux.com。1、首先是安裝nginx和to

解決nginx反向代理proxy不能轉發header報頭

linux nginx centos7 使用nginx做負載均衡或http代理時,碰到http header不轉發的問題。配置裏只有轉發設置原始ip和host的 proxy_set_header Host $host; proxy_set_header X-Real-I

nginx反向代理tomcat

text vhost image index.jsp reverse level gte lamt 反代 回顧:tomcat配置和應用 server.xml, webapp的組織形式, 應用程序的部署,

搭建nginx反向代理用做內網域名轉發

網址 targe 服務器 路由器 http 請求轉發 tls .html 特定 原文網址鏈接:http://www.ttlsa.com/nginx/use-nginx-proxy/ https://www.cnblogs.com/Miss-mickey/p/6734831.

搭建Nginx反向代理做內網域名轉發

color 利用 大小 red 請求轉發 max 格式 服務器響應時間 ons 由於公司內網有多臺服務器的 http 服務要映射到公司外網靜態 IP,如果用路由的端口映射來做,就只能一臺內網服務器的 80 端口映射到外網 80 端口,其他服務器的 80 端口只能映射到外網的

nginx反向代理tomcat一段時間後出現的ERR_CONTENT_LENGTH_MISMATCH異常

使用nginx代理tomcat上的web專案。專案上線了一段時候後,訪問專案出現了css檔案或js檔案的ERR_CONTENT_LENGTH_MISMATCH異常,而不能載入這些檔案。 查詢網上給出的解答,一般是說在nginx的proxy_temp下的快取檔案的所有者不是nginx啟動者而導

Nginx反向代理兩個tomcat服務器

pan 技術 我們 nginx反向代理 bubuko strong tomcat服務器 地址 地方 第一步,在Linux上安裝兩個tomcat,修改好端口號後,啟動起來。 第二步,配置本地的DNS解析,即修改host文件: 第三步,配置Nginx配置文件 反向代理的

linux下Nginx反向代理多個tomcat(單獨訪問或叢集配置) Nginx upstream的5種權重分配方式

第一步需要在你的伺服器上安裝Nginx,請檢視此文章:https://blog.csdn.net/u013641234/article/details/73838472 安裝完成以後,啟動Nginx,看看是否能夠正常訪問, 然後開始配置Nginx反向代理 : 同一臺伺服器或多臺伺服