Nginx+Tomcat动静分离及Nginx优化

目的:nginx处理用户请求的静态页面,tomcat处理用户请求jsp页面,来实现动态分离,nginx处理静态页面效率远高于tomcat,这样一来就能更好的提高并发,处理性能。

准备软件:

下载jdk1.7:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

下载tomcat8.0:http://tomcat.apache.org/download-80.cgi

下载nginx1.4.4:http://nginx.org/en/download.html

1、JDK配置

1

2

3

4

5

6

7

8

9

10

[root@localhost ~]# tar zxvf jdk-7u45-linux-x64.tar.gz

[root@localhost ~]# mv jdk1.7.0_45/ /usr/local/jdk

[root@localhost ~]# vi /etc/profile

JAVA_HOME=/usr/local/jdk

PATH=$PATH:$JAVA_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

exportJAVA_HOME PATHCLASSPATH

[root@localhost ~]# source /etc/profile

[root@localhost ~]# java -version #显示版本说明成功

java version"1.7.0_45"

2、Tomcat配置

1

2

[root@localhost ~]# tar zxvf apache-tomcat-8.0.0-RC5.tar.gz

[root@localhost ~]# mv apache-tomcat-8.0.0-RC5 /usr/local/tomcat

#默认tomcat是root身份运行的,这样不安全,我们设置来用普通用户

1

2

3

4

5

6

[root@localhost ~]# groupadd tomcat

[root@localhost ~]# useradd -g tomcat tomcat

[root@localhost ~]# passwd tomcat

[root@localhost ~]# chown tomcat.tomcat -R /usr/local/tomcat

[root@localhost ~]# su - tomcat /usr/local/tomcat/bin/startup.sh

[root@localhost ~]# echo 'su - tomcat -c "tomcat /usr/local/tomcat/bin/startup.sh"' >> /etc/rc.local #开机启动

3、Nginx安装配置

1

2

3

4

5

6

7

[root@localhost ~]# groupadd nginx

[root@localhost ~]# useradd -g nginx -s /sbin/nologin nginx

[root@localhost ~]# yum install –y make zlib-devel openssl-devel pcre-devel

[root@localhost ~]# tar zxvf nginx-1.4.4.tar.gz

[root@localhost ~]# cd nginx-1.4.4

[root@localhost nginx-1.4.4]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module

[root@localhost nginx-1.4.4]# make && make install

#主配置文件配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

user nginx;

worker_processes 1;

error_log logs/error.log;

pid logs/nginx.pid;

events {

use epoll;

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

#日志格式定义

log_format main'$remote_addr - $remote_user[$time_local] "$request" '

'$status $body_bytes_sent"$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log logs/access.log main;

sendfile on;

keepalive_timeout 65;

#gzip压缩功能设置

gzipon;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types text/plainapplication/x-javascripttext/cssapplication/xml;

gzip_vary on;

server {

listen 80;

server_name www.test.com;

location / {

#jsp网站程序根目录,一般nginx与tomcat在同一个目录

root/usr/local/tomcat/webapps/ROOT;

index index.html index.jsp index.html;

}

location ~ .*.jsp$ {

index index.jsp;

proxy_pass http://127.0.0.1:8080;#来自jsp请求交给tomcat处理

proxy_redirect off;

proxy_set_header Host $host;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 10m;#允许客户端请求的最大单文件字节数

client_body_buffer_size 128k;#缓冲区代理缓冲用户端请求的最大字节数

proxy_connect_timeout 90;#nginx跟后端服务器连接超时时间

proxy_read_timeout 90;#连接成功后,后端服务器响应时间

proxy_buffer_size 4k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffers 6 32k;#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

proxy_busy_buffers_size 64k;#高负荷下缓冲大小(proxy_buffers*2)

proxy_temp_file_write_size 64k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传

}

location ~ .*\.(gif|jpg|png|bmp|swf)$#由nginx处理静态页面

{

expires 30d;#使用expires缓存模块,缓存到客户端30天

}

location ~ .*\.(jsp|js|css)?$

{

expires 1d;

}

error_page 404/404.html;#错误页面

error_page 500 502 503 504/50x.html;

location =/50x.html {

root html;

}

}

}