使用Nginx反向代理tomcat服务器
2017-01-05 17:19
796 查看
Nginx反向代理tomcat服务器配置
这里将直接介绍配置方法,不会再介绍为什么要使用反向代理。下面是nginx.conf配置文件,文件在默认安装路径的conf下
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { 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; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; include /usr/local/nginx/conf/conf.d/*.conf; }
下面我们在conf目录同级目录中创建文件夹,保存nginx的其他信息,通过include的方式引入,操作如下
mkdir conf.d cd conf.d #新建配置子文件 vim tomcat_server.conf
在配置子文件中加入
#负载均衡配置,这里可以添加多个server,weight为权重,如果添加多个,注意分布式session的处理 upstream backend { server localhost:8080 weight=1; } server { listen 80; server_name cc520.me ; location / { proxy_pass http://backend; #来自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服务器传 } }
完成以上配置Nginx反向代理也就完成了,下面我们测试一下
进入${user.nginx.path}
#检查配置文件 sbin/nginx -t
显示如下结果,表示配置文件正确
执行
#重载配置文件 sbin/nginx -s reload
完成以上操作,表示Nginx反向代理Tomcat服务器配置已经完成,可以在浏览器中访问nginx服务器,测试配置正确性。
Nginx缓存配置
Nginx缓存可以吧静态资源缓存在固定目录中,这样下次访问的时候将不会再请求tomcat服务器,直接由nginx返回,节省tomcat服务器资源,下面介绍如何配置nginx缓存:配置缓存目录
#创建存放nginx缓存目录 mkdir /data/nginx/cache
下面我们把上面Nginx反向代理中创建的tomcat_server.conf进行一些改变,如下所示
#levels设置目录层次 keys_zone设置缓存名字和共享内存大小 inactive在指定时间内没人访则被删除在这里是1天 max_size最大缓存空间 proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=cache_one:10m inactive=1d max_size=1G; upstream backend { server localhost:8080 weight=1; } server { listen 80; server_name cc520.me ; location / { proxy_pass http://backend; #来自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 ~* "\.(jpg|jpeg|png|gif|html|css|js|woff2|woff|map)?$" { proxy_pass http://backend; proxy_cache cache_one; proxy_cache_valid 200 24h; #200状态缓存24小时 proxy_cache_valid 302 10m; #302状态缓存10分钟 add_header X-Cache-Status $upstream_cache_status; #在http头部增加一个字段显示是否命中缓存 }
完成以上配置Nginx缓存配置也就完成了,下面我们测试一下
进入${user.nginx.path}
#检查配置文件 sbin/nginx -t
显示如下结果,表示配置文件正确
执行
#重载配置文件 sbin/nginx -s reload
我们访问一下nginx服务,然后进入缓存文件夹
cd /data/nginx/cache ls
显示如下图,表示缓存配置成功了
动态资源和静态资源分离配置
这一步其实也没有太多需要配置的地方,如果使用的SpringMVC,没有后缀名的情况下,只需要使用入上(Nginx缓存配置)的配置文件即可。如果是以.jsp|.do结尾,需要配置
location / { }
改为
location ~ "\.(jsp|do)$" { #当请求的是jsp或do文件时直接到tomcat上去取 }
并不需要增加其他配置信息
查看缓存方式是否配置成功,可以查看tomcat访问日志,访问日志中会展现只获取一次静态文件的状态,表示静态资源和动态资源分配成功,如果静态资源还是每次都请求tomcat,表示配置失败,需要检查配置文件是否编写正确。
Nginx gzip配置
配置gzip可以大幅度提升资源加载速度,配置方法如下#进入下面第一次创建的子配置文件夹 cd ${user.nginx.path}/conf/conf.h vim gzip.conf
新建如下配置文件
#gzip压缩功能设置 gzip on; #开启Gzip gzip_min_length 1k; #不压缩临界值,大于1K的才压缩,一般不用改 gzip_buffers 4 16k; #缓冲 gzip_http_version 1.0; #用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1 gzip_comp_level 2; #压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧 gzip_types text/plain application/x-javascript text/css application/xml application/javascript application/x-font-woff image/jpeg image/gif image/png;进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了 gzip_vary on;跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding" gzip_disable "MSIE [1-6]\.";#IE6对Gzip不怎么友好,不给它Gzip了
这里的配置参考了Nginx开启Gzip压缩大幅提高页面加载速度,详细的地方可以点击查看。
完成了以上配置,还是执行
sbin/nginx -t sbin/nginx -s reload #执行配置是否成功 curl -I -H "Accept-Encoding: gzip, deflate" "http://127.0.0.1/resources/blog/js/bootstrap.min.js"
显示如下图红框所示,表示gzip配置成功
通过以上几个配置,就完成Nginx基本配置,也可以大幅度的提升网站访问速度和降低tomcat服务器压力,大家可以亲自试试,看看效果如何。
相关文章推荐
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 使用Nginx反向代理tomcat服务器
- 如何搭建web服务器 使用Nginx搭建反向代理服务器
- 使用Nginx反向代理Tomcat