nginx反向代理tomcat
本文由個人總結,如需轉載使用請標明原著及原文地址
首先你要有tomcat和nginx
沒有裝tomcat的點這裏!!!!!
沒有裝nginx的點這裏!!!!!!
nginx反向代理tomcat其實很簡單只需要修改nginx的配置文件就行了
nginx配置文件在/usr/loacl/nginx/conf/nginx.conf
有圖形化界面的可以直接打開修改,沒圖形化界面的用vim命令打開修改
在server上方加入upstream
完整代碼結構如下
upstream Demo_server{
ip_hash;#將相同ip的請求發送到同個server上
server 127.0.0.1:8080;
#配置多個,實現輪詢,將多個前端請求自動分配到多個server上
#server 127.0.0.1:8082 backup;#熱備,作爲備份,主server宕機後自動轉發到熱備server
#server 127.0.0.1:8082 weight=2;#權重模式,優先使用級別
}
server {
listen 80;
server_name www.hostname.cn;
root /data;#前端靜態工程
index index.html;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://Demo_server;#反向代理地址
}
location ~ .*\.(gif|jpg|png|html|mp3){
expires 6h;
}
location ~ .*\.(js|css){
expires 2h;
}
access_log /data/logs/nginx/app_access.log;
}
1.upstream中主要是部署反向代理的服務器,服務器可以是多個也可以是單個
配置多個服務器能夠實現負載均衡,所有服務器被使用到的機率都相同,避免單一服務器訪問量過大產生問題
upstream Demo_server{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
#配置多個,實現輪詢,將多個前端請求自動分配到多個server上
}
如果是有資金來往的網站,爲了避免用戶刷新使得訂單提交到多個服務器上的情況可以在upstream中加入 ip_hash,目的是同個ip發出的請求只由單個服務器處理
upstream itripbiz_server{
ip_hash;#將相同ip的請求發送到同個server上
server 127.0.0.1:8080;
}
配置的server後面可以加上backup,weight關鍵詞
backup的作用是將該服務器作爲一個熱備服務器,平時不使用,僅當主服務器出現問題宕機後使用
upstream itripbiz_server{
server 127.0.0.1:8080;
server 127.0.0.1:8082 backup;
#熱備,作爲備份,主server宕機後自動轉發到熱備server
}
weight是權重的意識,也就是服務器被使用的優先級,因爲有的時候,公司有多臺服務器,有的性能比較好,有的性能比較差,那麼我們能讓性能好的多處理些請求,就可以用到weight
upstream itripbiz_server{
server 127.0.0.1:8080;
server 127.0.0.1:8082 weight=2;#權重模式,優先使用級別
}
像這樣 8082端口的server被用到的概率就會大於8080端口的server,但是這僅僅是概率上的問題,即使把權重設的很大,其他服務器依舊能分配到請求,這方面知識可以參考CPU分配時間片的原理
2.upstream說完後,我們接下來說下server
nginx.conf中的server就是一個攔截器,他能夠監聽並攔截你指定端口的請求
關鍵詞 | 作用 |
---|---|
listen | 是監聽的端口 |
server_name | 是訪問的域名,例如127.0.0.1與localhost的關係 |
root | 這是設置靜態頁面存放的路徑 |
index | 默認主頁 |
location | 根據後面的匹配規則進行攔截 |
access_log | 配置日誌存放路徑 |
攔截所有的請求,然後發送到tomcat上
要注意,第三條的名字要和之前配置的upstream的名字相同
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://Demo_server;#反向代理地址
}
然後可以驗證下conf文件語法是否正確使用以下命令
/usr/local/nginx/sbin/nginx -t
我這第一次驗證conf文件時報錯,原因是我指定的日誌文件夾不存在,所以我用mkdir -p 創建了文件夾,之後再進行驗證就顯示successful了
3.重啓nginx
/usr/local/nginx/sbin/nginx -s reload
然後就可以通過nginx訪問tomcat了(tomcat要記得開)