日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx_反向代理配置讲解

發布時間:2024/4/13 Nginx 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx_反向代理配置讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
剛才簡單說了一下正則怎么去寫,然后寫這個是為了干什么事,讓你有一個最初印象,說一下nginx一個很關鍵的話題,也很簡單,這個問題就是反向代理和upstream負載均衡

這個其實是很簡單的,那咱們看這塊,Nginx的反向代理用這個proxy和負載均衡upstream,所謂的反向代理其實是很簡單的,咱們的request請求,之前是直接訪問咱們的tomcat,之前可能直接訪問咱們的tomcat服務器,現在不去直接訪問他了,怎么去做啊,現在我們是這么去做,我們訪問nginx服務器,訪問的是nginx服務器,然后在nginx里面配置好了一個代理,就是我這個請求先通過nginx攔截一下,然后利用nginx再給我寫到一個位置,這個后端的服務器可能是APACHE,可能是tomcat,都可以,比如咱們就來tomcat,也可以代理到tomcat2,也可以代理到tomcat3,這種多的形式就是負載均衡了,這里可以配置一些權重啊,主備啊,都可以,其實這些配置都是很簡單的,那咱們現在就看proxy,反向代理,就相當于我的請求交給nginx,nginx幫我轉發給后端的tomcat服務器,然后tomcat響應給nginx服務器,中間倒把手,看看怎么去做,其實這個東西是很easy的,咱們vim conf/nginx.conf,咱們就看上面的70,就是最上面的70這塊,對他進行一個簡單的配置,你比如說,我這里面其實也會有這個配置,我怕我這個寫錯了,有一個代理的路徑#配置反向代理tomcat服務器:攔截.jsp結尾的請求轉向到tomcat#location ~ \.jsp$ {# proxy_pass http://192.168.1.171:8080;#} 我把這個copy一下,啥也不用管,下面的server就不用管了,咱們不去訪問他不就行了,咱們就去關注70的server,監聽的是70這個server,這里面是有一個location的,我現在再寫一個location,在這兒再寫一個location,這里面就寫這幾句話

你看這兒,這不就是動靜分離嗎,你只要訪問我的域名,當然我這里是localhost,你訪問我70端口的時候,請求是不是都進來了請求都進來之后,通過location進行過濾,如果你是一個斜杠/,匹配上了的話,當然這塊你可以自己去寫正則表達式,訪問jpg,js結尾的,圖片直接仍得到nginx服務器上,靜態的,包括js,css,訪問直接走這里就行了,$符號表示什么結尾,開頭是^這個,\.,因為.得轉義一下,你這個.jsp結尾的請求,你都得給我轉到這下面,看見了嗎,這個服務器一定是http的位置,然后這個proxy_pass這個配置項,代理的key,proxy_pass是固定的,value是你自己隨便來的,我這里是114,那我這里就直接這么去寫吧,只要你是.jsp結尾的請求,都給我轉向到114的8080,可能他也是一個服務,一回我再解壓一個tomcat,你就會發現了,配置就這么簡單

當前我這里又tomcat嗎,可能就是咱們之前講solr的時候,我再解壓一個吧,cd到software下,然后tar -zxvf tomcat,然后-C /usr/local下面,我剛才去解壓了一個tomcat,這就多了一個tomcat了,cd到tomcat的webapps下,這里面你會發現這么幾個東西,其實這些我都可以干掉,ROOT其實即使我干掉重啟也會生成,所以我干脆就不動他了,我就rm -rf docs/,rm -rf examples/,rm -rf host-manager/,rm -rf manager/,就剩一個ROOT,我cd到ROOT下,ROOT正常TOMCAT啟動好以后,訪問的就是ROOT下的index.jsp文件

我現在去把我的tomcat去啟動一下,/usr/local/apache-tomcat/bin/startup.sh

這樣的話我就去訪問我的地址了,我的地址就是114,http://192.168.1.114:8080,如果tomcat是正常啟動,就會進到小貓的界面,進來了

其實tomcat進來能找到小貓的界面,是因為啥啊,其實你每次刪了ROOT,他也會存在的,他訪問的都是index.jsp,不信咱們可以看一下

你可以看到jsp下面,他就是你訪問的HOME,Documentation,然后Configuration,Example,你可以對照一下

這里邊有很多,Home,Documentation,Configuration,Example什么什么,其實你看到的這個界面,默認就進到這里了,其實就是這個意思,這樣的話TOMCAT就啟動了,訪問JSP我是不需要重新啟動服務的,我記得我這里有一個小的JSP文件,給他copy過來,直接給他拽到這下面,給他拽到ROOT下面,我直接扔到這下面,就多了一個test.jsp

然后我去vim test.jsp,這是我自己隨便寫的一個JSP文件,主要是TEST1 PAGE,啥也沒寫,這個你不用去管,可能是空的,因為我注釋掉了,主要是看nginx server ip,然后叫做request.getRemoteAddr(),把當前客戶端請求的ip給我得到,然后去打印一下,差不多就是這樣的一個小界面

這個界面有了以后,咱們當前的tomcat是啟動的,如果我先做直接去敲test.jsp的話

他就直接進來了,直接訪問了當前的JSP,這塊我注釋掉所以沒有,這里是我直接訪問tomcat的ip,根nginx沒有關系呢,我本地的IP是192.168.1.200,這塊能看懂吧,無非就是加一個界面,然后我本地區訪問一下test,看見本地訪問的ip地址,現在有一個問題產生了,如果要是nginx給我做一個代理會是什么情況呢,我瀏覽器本機的是200,我去訪問nginx,nginx當前的服務器在114上,然后他接收了我的request以后呢,給我代理了一下,然后給我轉到了一個后臺的tomcat服務器上,這個時候你再去調用remote address的時候,說白了其實你后端的tomcat這個請求啊,他接收的remote其實是nginx server,因為你轉了一把手,請求真正過來的是114,并不是200,如果我把tomcat放到另外一個節點下,放到115下,相當于115這個節點啟動tomcat,get remote address的時候get的是114,而不是真實的這個200,因為我是經過nginx代理的,是nginx轉給你的,會有這樣的一個問題,咱們可以把這個重建一下,我現在tomcat已經啟動了,剛才我是沒有依賴任何的nginx,現在我去依賴一下他,vim /usr/local/nginx/conf/nginx.conf,你看到我的請求是這樣的,你如果是后綴是以.jsp結尾的,你這個會經過代理,會轉到114下的8080,你可以理解為115下的8080,其實都是一樣的,因為我現在開啟了兩個服務,一個是nginx服務,一個是tomcat服務,相當于請求過來先請求nginx,nginx幫我轉到tomcat服務,tomcat get remote address,其實是114,并不是我瀏覽器真正的訪問段,其實已經寫完了

那我先去把它reload一下,/usr/local/nginx/sbin/nginx -s reload

reload成功了,那咱們來看一下吧,現在我不這么去敲了,這么去敲我是直接去訪問tomcat,我不直接訪問tomcat,我去直接訪問我的70,我的70下的什么啊,test.jsp,為什么我這樣來,看見了嗎

他訪問的還是能走到tomcat,能理解嗎,但是IP變了,remote ip是nginx的ip,是不是會有這樣的一個問題,就是相當于我的請求會經過200這個主機,我去請求到nginx,nginx一看你是.jsp結尾的,直接給你轉到tomcat,tomcat最終呈現了這個界面,但是發現remote的ip變成了nginx,能理解我說的意思吧,你需要自己去定義一個了,你可以用x-forward,或者是用其他的方式都行,一般是可以隨便去取一個名字,自己加一個變量,還是比較推薦這么去干的,那在這兒其實都已經寫好了,你加一句話就OK,然后在這里做一個什么事啊,一定是在這個里面去做這個事情,我copy,加上這一段話,這樣的話就是你去代理之前啊,你先給我去set一個變量,其實這個你可以詳細去找一下文檔,就不想去解釋了,也就是說他這里有一個配置,這個配置其實你可以去官網去看,我這里就不去說太多了,文檔我肯定不會講的特別詳細,特別詳細就沒得邊了,這么多組件,現在我們不是講到proxy嗎,你自己可以去看,module,他還有一些壓縮的,你要知道去用,他給你呈現的都挺好,就是到底怎么去使用,怎么去配,當然我也會給你去配

所以我在這就不介紹這些參數到底怎么去使用了,服務器上很詳細,那你就知道他可以去設置一些參數了,參數固定了proxy_set_header,就是在header里面設置一個真實的內容,然后這個x-real-ip你自己定,叫啥都行,x-real-ip,真實的ip又是什么啊,是叫做$remote_addr,大家想一想,現在你本地就是windows通過瀏覽器,訪問到nginx過來,那對于nginx來講,誰是remote,我的瀏覽器,windows,那remote_addr就是192.168.1.200,由于在后端已經轉成tomcat了所以我會把真實的x-real-ip放到我這個header里,然后在后端的tomcat里邊,我通過getHeader,然后你的x-real-ip,去取得真實的客戶端IP,可以這么去干,或者你用他內置的有一個變量,叫做x-forward,這個都行

看你怎么去使用,加上一句話,叫做x-real-ip

現在我們去修改一下tomcat,應該cd到這下面,cd /usr/local/apache-tomcat/webapps/ROOT,vim test.jsp我把這個給他放開,這回就有他了,這個就是一個普通的jsp表達式,request.getHeader('x-real-ip'),nginx請求的時候攜帶過來一些東西,或者你也可以放到attribute里,你可以通過setAttrite()和getAttrite(),這方式有很多種,你可以去隨便選擇一種,解決辦法有很多很多,這里只是給你提一個思路,我這么去做完了以后,保存

我這么去做完了以后,我去保存,剛才我不知道我reload沒有,我再去重新reload一下,就把nginx重新reload一下/usr/local/nginx/sbin/nginx -s reload

然后我再去訪問的時候,你會發現了,我已經把真實的client端的192.168.1.200帶過來了

這回你就能夠找到了,就是可以加一個參數,方式很多種,那這個就是關于反向代理,你會發現了,就是動靜分離了,動態的東西是以jsp結尾的,或者這里面你可以加小括號,這個怎么寫來的,正則括號(*.jsp$),一個豎線/,比如*.do然后.action,只要匹配其中一個,只要你發現請求是和tomcat有關,直接扔給tomcat就可以了,這種是非常簡單的

?

總結

以上是生活随笔為你收集整理的Nginx_反向代理配置讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。