成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Nginx+Tomcat整合體驗(yàn)

heartFollower / 1027人閱讀

摘要:題外話,由于使用經(jīng)常需要編輯,我們可以借助來使語法高亮,看起來更清晰明了。移動(dòng)到目錄在中添加再打開,已經(jīng)有語法高亮了里面提供了很多可以調(diào)節(jié)優(yōu)化的地方,這里簡要了解模塊的幾個(gè)常用參數(shù)。允許或禁止基于請(qǐng)求響應(yīng)的壓縮。表示匹配的路徑。

Nginx是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器。在Java的Web架構(gòu)中,通常使用Tomcat和Nginx進(jìn)行配合,Nginx作為反向代理服務(wù)器,可以對(duì)后臺(tái)的Tomcat服務(wù)器負(fù)載均衡,也可以讓Nginx處理靜態(tài)頁面的請(qǐng)求、Tomcat處理JSP頁面請(qǐng)求達(dá)到動(dòng)靜分離的目的。

Nginx簡介

Nginx ("engine x") 是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器,是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點(diǎn)開發(fā)的。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。

截止到2014年12月31日,Nginx僅次于apache成為第二大web服務(wù)器軟件,而在全球最忙碌top10000網(wǎng)站中使用比例更是高達(dá)42.7%。其發(fā)展速度和流行程度已經(jīng)遠(yuǎn)遠(yuǎn)超過其它同類軟件,成為大型網(wǎng)站和高并發(fā)網(wǎng)站的首選。

Nginx由內(nèi)核和一系列模塊組成,內(nèi)核提供web服務(wù)的基本功能,如啟用網(wǎng)絡(luò)協(xié)議,創(chuàng)建運(yùn)行環(huán)境,接收和分配客戶端請(qǐng)求,處理模塊之間的交互。Nginx的各種功能和操作都由模塊來實(shí)現(xiàn)。Nginx的模塊從結(jié)構(gòu)上分為核心模塊、基礎(chǔ)模塊和第三方模塊。

核心模塊: HTTP模塊、EVENT模塊和MAIL模塊
基礎(chǔ)模塊: HTTP Access模塊、HTTP FastCGI模塊、HTTP Proxy模塊和HTTP Rewrite模塊
第三方模塊: HTTP Upstream Request Hash模塊、Notice模塊和HTTP Access Key模塊及用戶自己開發(fā)的模塊

這樣的設(shè)計(jì)使Nginx方便開發(fā)和擴(kuò)展,也正因此才使得Nginx功能如此強(qiáng)大。Nginx的模塊默認(rèn)編譯進(jìn)nginx中,如果需要增加或刪除模塊,需要重新編譯Nginx,這一點(diǎn)不如Apache的動(dòng)態(tài)加載模塊方便。如果有需要?jiǎng)討B(tài)加載模塊,可以使用由淘寶網(wǎng)發(fā)起的web服務(wù)器Tengine,在nginx的基礎(chǔ)上增加了很多高級(jí)特性,完全兼容Nginx,已被國內(nèi)很多網(wǎng)站采用。

開發(fā)環(huán)境搭建

下面進(jìn)入正題,對(duì)Nginx和Tomcat進(jìn)行整合使用。首選是開發(fā)環(huán)境的搭建,包括JDK、Tomcat和Nginx。本文的實(shí)驗(yàn)環(huán)境是Ubuntu。

JDK安裝

下載JDK,并解壓到指定目錄中。

lap@lap-KVM:~$ wget http://120.52.72.24/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
lap@lap-KVM:~$ tar zxvf jdk-7u79-linux-x64.tar.gz 
lap@lap-KVM:~$ sudo mv jdk1.7.0_79/ /usr/local/jdk

配置環(huán)境變量,在/etc/profile中添加JAVA_HOME等路徑。

export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

加載環(huán)境變量。

lap@lap-KVM:~$ source /etc/profile

查看是否配置成功。

java -version

顯示以下結(jié)果則配置成功:

Tomcat安裝

第二步是Tomcat的安裝。

下載Tomcat,并解壓到指定目錄中。

lap@lap-KVM:~$ wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.9/bin/apache-tomcat-8.5.9.tar.gz
lap@lap-KVM:~$ tar zxvf apache-tomcat-8.5.9.tar.gz 
lap@lap-KVM:~$ sudo mv apache-tomcat-8.5.9/ /usr/local/tomcat

關(guān)于Tomcat的配置以及設(shè)置普通用戶等在這里就不提了。直接啟動(dòng)Tomcat。

lap@lap-KVM:~$ sudo /usr/local/tomcat/bin/startup.sh

若出現(xiàn)以下提示,表示找不到JAVA_HOME的路徑

此時(shí)需要在Tomcat的bin目錄下的catalina.sh中加入以下信息:

再次啟動(dòng)Tomcat,成功

此時(shí)就可以打開http://localhost:8080,看到Tomcat的主頁。

Nginx安裝

接下來就是主角Nginx。

下載Nginx,解壓,安裝到指定目錄。

lap@lap-KVM:~$ wget http://labfile.oss.aliyuncs.com/nginx-1.7.9.tar.gz
lap@lap-KVM:~$ tar zxvf nginx-1.7.9.tar.gz
lap@lap-KVM:~$ cd nginx-1.7.9
lap@lap-KVM:~/nginx-1.7.9$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module
lap@lap-KVM:~/nginx-1.7.9$ # make && make install

切換到Nginx的安裝目錄下,啟動(dòng)Nginx。

lap@lap-KVM:~$ cd /usr/local/nginx/
lap@lap-KVM:/usr/local/nginx$ sudo ./nginx-1.7.9/objs/nginx

此時(shí)訪問http://localhost,將可以看到Nginx的歡迎界面。(因?yàn)槲也皇侵苯釉贜ginx本機(jī)上訪問的,所以是用的Nginx服務(wù)器的IP:192.168.6.86來訪問的,本文接下去的部分都是這樣。)

Nginx配置

Nginx可以通過調(diào)整配置文件的參數(shù),對(duì)性能進(jìn)行優(yōu)化。這個(gè)配置文件就是nginx.conf。

nginx.vim

題外話,由于使用Nginx經(jīng)常需要編輯nginx.conf,我們可以借助nginx.vim來使nginx.conf語法高亮,看起來更清晰明了。

到http://www.vim.org/scripts/sc...下載nginx.vim。

移動(dòng)到/usr/share/vim/vim74/syntax/目錄

在/usr/share/vim/vim74/filetypr.vim中添加:

au BufRead,BufNewFile /usr/local/nginx/conf/* set ft=nginx

再打開nginx.conf,已經(jīng)有語法高亮了:

nginx.conf

nginx.conf里面提供了很多可以調(diào)節(jié)優(yōu)化的地方,這里簡要了解http模塊的幾個(gè)常用參數(shù)。這一部分內(nèi)容參考實(shí)驗(yàn)樓的教程。

如圖,是我的nginx.conf的配置

簡單介紹一下紅色方框內(nèi)的一些配置參數(shù)。

第一個(gè)方框內(nèi)的是關(guān)于日志的設(shè)置:

log_format 定義日志格式

access_log 設(shè)置是否保存訪問日志,設(shè)置為off可以降低磁盤IO而提升速度。

第二個(gè)方框內(nèi)的是一些基本設(shè)置:

sendfile 指向sendfile()函數(shù)。sendfile()在磁盤和TCP端口(或者任意兩個(gè)文件描述符)之間復(fù)制數(shù)據(jù)。sendfile()直接從磁盤上讀取數(shù)據(jù)到操作系統(tǒng)緩沖,因此會(huì)更有效率。

tcp_nopush 配置nginx在一個(gè)包中發(fā)送全部的頭文件,而不是一個(gè)一個(gè)發(fā)送。

tcp_nodelay 配置nginx不要緩存數(shù)據(jù),快速發(fā)送小數(shù)據(jù)。

keepalive_timeout 指定了與客戶端的keep-alive鏈接的超時(shí)時(shí)間。服務(wù)器會(huì)在這個(gè)時(shí)間后關(guān)閉鏈接。

第三個(gè)方框內(nèi)的是關(guān)于壓縮功能的設(shè)置:

gzip 打開壓縮功能可以減少需要發(fā)送的數(shù)據(jù)的數(shù)量。

gzip_disable 為指定的客戶端禁用 gzip 功能。

gzip_proxied 允許或禁止基于請(qǐng)求、響應(yīng)的壓縮。設(shè)置為any,就可以gzip所有的請(qǐng)求。

gzip_comp_level 設(shè)置了數(shù)據(jù)壓縮的等級(jí)。等級(jí)可以是 1-9 的任意一個(gè)值,9 表示最慢但是最高比例的壓縮。

gzip_types 設(shè)置進(jìn)行 gzip 的類型。

接下來看一下http模塊中的子模塊server,以及server中的子模塊location的配置:

其中:

listen 表示當(dāng)前的代理服務(wù)器監(jiān)聽的端口,默認(rèn)的是監(jiān)聽80端口。

server_name 表示監(jiān)聽到之后需要轉(zhuǎn)到哪里去,localhost表示轉(zhuǎn)到本地,也就是直接到nginx文件夾內(nèi)。

location 表示匹配的路徑。

root 表示到指定文件路徑尋找文件,可用于靜態(tài)文件。

index 表示默認(rèn)主頁,可以指定多個(gè),按順序查找。

deny和allow 是訪問控制設(shè)置,禁止或允許某個(gè)IP或者某個(gè)IP段訪問。也可以指定unix,允許socket的訪問。

limit_rate_after 設(shè)置不限速傳輸?shù)捻憫?yīng)大小。當(dāng)傳輸量大于此值時(shí),超出部分將限速傳送。

limit_rate 限制向客戶端傳送響應(yīng)的速率限制。參數(shù)的單位是字節(jié)/秒,設(shè)置為0將關(guān)閉限速。比如圖片中表示不限速部分為3m,超過了3m后限速為20k/s。

關(guān)于Nginx的更多配置解釋,可以參考這篇博文,講的非常詳細(xì)。

注意,修改完配置文件后需要重啟nginx生效。當(dāng)然,如果你的Nginx是用apt-get安裝的,可以用nginx -s reload命令重新加載配置文件即可。

Nginx+Tomcat

接下來就進(jìn)入本文的主題,將Nginx和Tomcat整合在一起使用。這部分工作其實(shí)也就是修改nginx.conf里的配置。

JSP頁面請(qǐng)求交給Tomcat處理

具體的,在nginx.conf中新建一個(gè)location,用正則表達(dá)式將所有JSP的請(qǐng)求匹配到該location中:

其中最核心的就是"proxy_pass http://localhost:8080;"這條配置,它將匹配到的請(qǐng)求都轉(zhuǎn)發(fā)給Tomcat去處理。

其他的配置:

proxy_set_header Host $host; 后端的Web服務(wù)器可以通過X-Forwarded-For獲取用戶真實(shí)IP。

client_max_body_size 10m; 允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù)。

client_body_buffer_size 128k; 緩沖區(qū)代理緩沖用戶端請(qǐng)求的最大字節(jié)數(shù)。

proxy_connect_timeout 90; Nginx跟后端服務(wù)器連接超時(shí)時(shí)間。

proxy_read_timeout 90; 連接成功后,后端服務(wù)器響應(yīng)時(shí)間。

proxy_buffer_size 4k; 設(shè)置代理服務(wù)器保存用戶頭信息的緩沖區(qū)大小。

proxy_buffers 6 32k; proxy_buffers緩沖區(qū)。

proxy_busy_buffers_size 64k; 高負(fù)荷下緩沖大小。

proxy_temp_file_write_size 64k; 設(shè)定緩存文件夾大小。

此時(shí)訪問http://localhost/index.jsp,會(huì)發(fā)現(xiàn)跳轉(zhuǎn)到了Tomcat的頁面。但是你會(huì)發(fā)現(xiàn),此時(shí)的頁面是這樣的:

這是因?yàn)殡m然JSP的請(qǐng)求轉(zhuǎn)發(fā)給Tomcat的了,但是圖片、css等靜態(tài)文件卻找不到。所以接下來我們要配置靜態(tài)文件的路徑,完成動(dòng)靜分離。

動(dòng)靜分離

對(duì)于靜態(tài)文件的請(qǐng)求,我們也新建一個(gè)location,將常見圖片、css、js等請(qǐng)求匹配到該location中

如圖所示,配置非常簡單,通過root關(guān)鍵字,將匹配到的請(qǐng)求都到tomcat/webapps/ROOT目錄下直接查找。而expires 30d則表示使用expires緩存模塊,緩存到客戶端30天。

配置完后重啟Nginx。再輸入http://localhost/index.jsp,會(huì)發(fā)現(xiàn)此時(shí)的Tomcat頁面已經(jīng)正常顯示了。我們已經(jīng)完成了JSP請(qǐng)求與靜態(tài)文件請(qǐng)求的動(dòng)靜分離。但是實(shí)際上也只是顯示這個(gè)頁面而已,當(dāng)你點(diǎn)擊頁面上的其他鏈接時(shí),會(huì)顯示404,這是顯然的,因?yàn)槲覀冎慌渲昧薘OOT目錄。

如果配置完仍然發(fā)現(xiàn)無法讀取靜態(tài)文件,看看訪問http://localhost/tomcat.png時(shí)是否顯示403 forbidden。如果是的話就是因?yàn)闄?quán)限問題導(dǎo)致的,這里簡單的解決辦法是把nginx.conf首行的user設(shè)為root:

當(dāng)然,如果不想使用root用戶運(yùn)行,可以通過修改目錄訪問權(quán)限解決403問題,但不能把目錄放在root用戶宿主目錄下,放在任意一個(gè)位置并給它755,或者通過chown改變它的擁有者與Nginx運(yùn)行身份一致也可以解決權(quán)限問題。

負(fù)載均衡

接下來我們來實(shí)驗(yàn)一下負(fù)載均衡。

在nginx.conf中,通過配置upstream,可以很輕松配置后臺(tái)服務(wù)器的負(fù)載均衡:

具體的,可以在upstream中配置后臺(tái)Tomcat服務(wù)器的地址,這里我是配置了兩臺(tái)服務(wù)器,分別是本機(jī)也就是192.168.6.86和192.168.6.32,其中本機(jī)安裝的是Tomcat8,另一臺(tái)安裝的是Tomcat7,以示區(qū)別。然后在location中,將請(qǐng)求轉(zhuǎn)發(fā)給配置好的upstream處理。這里為了不跟前面的配置產(chǎn)生沖突,我新配置了一個(gè)server,監(jiān)聽8888端口。

然后,訪問http://localhost:8888。刷新幾次,會(huì)發(fā)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)到了不同的服務(wù)器上:

可以看到,顯示的頁面分別是Tomcat7和Tomcat8的主頁,證明請(qǐng)求轉(zhuǎn)發(fā)成功。

另外,你也可以在server后面加上一個(gè)權(quán)重weight,權(quán)重越大表示訪問到的機(jī)會(huì)越大,默認(rèn)為1。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39400.html

相關(guān)文章

  • 為什么有Nginx+Apache+Tomcat這種架構(gòu)

    摘要:而且在負(fù)載上面遠(yuǎn)超,為什么目前大多數(shù)的互聯(lián)網(wǎng)公司都是使用這種架構(gòu)模式,而不是直接,這樣不是架構(gòu)更加方便,而且性能更佳優(yōu)異嘛。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng)。 最近有人問我,Nginx有動(dòng)態(tài)分離機(jī)制,靜態(tài)請(qǐng)求直接就可以通過Nginx處理,動(dòng)態(tài)請(qǐng)求才轉(zhuǎn)發(fā)請(qǐng)求到后臺(tái)交由Tomcat進(jìn)行處理。而且Nginx在負(fù)載上面遠(yuǎn)超Apache,為什么目前大多數(shù)的互聯(lián)網(wǎng)公司都是使用Nginx+Apache...

    cppprimer 評(píng)論0 收藏0
  • 為什么有Nginx+Apache+Tomcat這種架構(gòu)

    摘要:而且在負(fù)載上面遠(yuǎn)超,為什么目前大多數(shù)的互聯(lián)網(wǎng)公司都是使用這種架構(gòu)模式,而不是直接,這樣不是架構(gòu)更加方便,而且性能更佳優(yōu)異嘛。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng)。 最近有人問我,Nginx有動(dòng)態(tài)分離機(jī)制,靜態(tài)請(qǐng)求直接就可以通過Nginx處理,動(dòng)態(tài)請(qǐng)求才轉(zhuǎn)發(fā)請(qǐng)求到后臺(tái)交由Tomcat進(jìn)行處理。而且Nginx在負(fù)載上面遠(yuǎn)超Apache,為什么目前大多數(shù)的互聯(lián)網(wǎng)公司都是使用Nginx+Apache...

    sihai 評(píng)論0 收藏0
  • Nginx+Tomcat關(guān)于Session的管理

    摘要:前言對(duì)的管理一直有了解,但是一直沒有實(shí)際操作一遍,本文從最簡單的安裝啟動(dòng)開始,通過實(shí)例的方式循序漸進(jìn)的介紹了幾種管理的方式。 前言 Nginx+Tomcat對(duì)Session的管理一直有了解,但是一直沒有實(shí)際操作一遍,本文從最簡單的安裝啟動(dòng)開始,通過實(shí)例的方式循序漸進(jìn)的介紹了幾種管理session的方式。 nginx安裝配置 1.安裝nginx [root@localhost ~]# y...

    superw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

heartFollower

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<