轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6386135.html
Nginx與tomcat整合可以實現服務器的負載均衡。
在用戶的請求發往服務器進行處理時,如果請求太多處理不了,容易造成服務器阻塞、響應慢等情況。這時,如果我們可以有多台服務器的話,就可以實現把請求派發給各台服務器進行處理,這個分發的過程就是由Nginx完成的。同樣,由於Tomcat主要用來處理動態的內容,比如jsp文件。那么靜態的html/圖片等資源就可以交給Nginx來處理,期間也用到了分發。對於有多台服務器時,用一台服務器裝Nginx作為代理服務器,把所有請求匯集到這里進行分發到其他服務器。而對於一台服務器實現動靜態分離時,則需要在一台服務器上同時搭建Nignx和tomcat,並進行整合。其原理都是一樣的,配置的文件也幾乎一樣。這里,我們只講在一台服務器上的整合。
一:安裝Nignx
sudo apt-get install nginx
二:配置nginx.conf文件
vi 打開nginx文件后,找到http{}節點,在里面添加:
upstream 你的域名{ server 你的雲主機IP:80; }
然后添加一個server。如果是配置多台服務器,則在上面添加多個upstream,下面對應多個server進行分發。這里我只有一個服務器,所以配置一個:
server { #偵聽80端口 listen 80; #定義使用域名訪問 server_name www.xx.com; #設定本虛擬主機的訪問日志 access_log logs/www.xx.com.access.log main; # 定義錯誤提示頁面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /root; } location ~ .*.[jsp|do|action]$ { #所有jsp頁面以及do/action請求均交由 tomcat處理 index index.jsp; proxy_pass http://你的域名:80; #轉向tomcat處理 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #設定訪問靜態文件直接讀取,不經過tomcat。過期時間30天 expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } #設定查看Nginx狀態的地址 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } }
三:整合tomcat
sudo vi /etc/nginx/conf.d/proxy.conf
輸入
#!nginx (-) # proxy.conf proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #獲取真實ip #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #獲取代理者的真實ip client_max_body_size 10m; client_body_buffer_size 128k; 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;
按Esc退出編輯模式,輸入 :wq 保存並退出。
配置defalut文件:
sudo vi /etc/nginx/sites-available/defalut
找到server{}添加:
#動態交給tomcat location ~ .*.[jsp|do|action]$ { index index.jsp; proxy_pass 你的域名:80; } #靜態直接讀取,不結果tomcat。過去時間30天 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; }
保存並退出。
四:測試。
重啟你的雲主機。登錄ubuntu后,分別啟動nginx和tomcat。(注意:重新部署項目,或者每次關機重啟后,都需要分別啟動tomcat和nginx)!啟動nginx:/etc/init.d/nginx 啟動tomcat:bin目錄下 ./startup.sh
然后在瀏覽器分別輸入 你的域名 以及 你的域名:80/index.jsp ,發現都跳轉到同一頁面。說明整合成功~