Nginx+Tomcat配置动静分离(附完整配置+注释)
2016-07-26 09:49
615 查看
我的环境
Nginx配置
proxy.conf(在Nginx.conf引用了)
gzip.conf(在Nginx.conf引用了)
注意以上我注释掉的一段动静分离的配置
因为网站的图片分两种,一种图片上作为css而产生的,一种图片上用户动态上传的,作为css的图片上放在项目的images文件夹里,用户上传的图片放在一个文件服务器里面,注释的配置是所有gif,jpg……等类型为后缀的url都会被nginx处理,如果在/usr/local/nginx/staticFiles/文件夹里没有图片,nginx则会返回404。/usr/local/nginx/staticFiles/这个文件夹只存放了js,css和css的图片。所以用户上传的图片都无法查看。
这是通过文件夹来配置动静分离,用户的图片文件夹不是images,所以我可以这么配置。
如果你们有更好的方法可以一起讨论!
Centos6.5 X86_64 Nginx1.8.0 Tomcat7.o
Nginx配置
#Nginx.conf user caogen; worker_processes 1; #因为我用的是虚拟机 只设置了1CPU error_log logs/nginx_error.log error; error_log logs/nginx_info.log info; pid logs/nginx.pid; worker_rlimit_nofile 51200; #更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。 events { use epoll; #nginx工作模式,epoll是linux平台下的高效模式,配合nginx的异步非阻塞作用 worker_connections 51200; #定义nginx每个进程的最大连接书为51200,一般网上都配置65535. accept_mutex on; #设置网络连接的序列化,当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是惊群问题。更详细的解释http://huoding.com/2013/08/24/281 multi_accept on; #设置worker_poocess是否允许同时接受多个网络连接,默认一个worker一次只接受一个新连接,multi_accept设置为on后能接受多个,有利于性能提升 } http { include mime.types; #nginx通过服务端文件的后缀名来判断这个文件属于什么类型,再将该数据类型写入http头部的Content-Type字段中,发送给客户端。mime.types这个文件里面全是文件类型的定义。 default_type application/octet-stream; #当用户请求的文件后缀在mime.types这个文件没有定义,便使用默认的type为二进制流 include /usr/local/nginx/conf/proxy.conf; 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; #启用之后,数据包会累积到一定大小才会发送,减小了额外开销,防止网络阻塞,提高网络效率 tcp_nodelay on; #启用之后,尽快发送数据。 #可以看到tcp_nopush是要等数据包累积到一定大小才发送,tcp_nodelay是要尽快发送,二者相互矛盾。实际上,它们可以一起用,最终的效果是先填满包,再尽快发送。 keepalive_timeout 65; #gzip on; include /usr/local/nginx/conf/gzip.conf; #开启负载均衡的服务器组 upstream caogen_proxy{ ip_hash; #每个请求按照ip的hash结果分配,同一个ip的访客固定访问一个后端服务器 server 192.168.88.130:8081; server 192.168.1.130:8085; } #禁止通过Ip访问 server{ server_name _: return 404; } server { listen 80; server_name localhost 127.0.0.1 192.168.88.130; charset utf-8; #access_log logs/host.access.log main; #动静分离 静态文件交给nginx处理 动态交给tomcat #location ~ .*\.(gif|jpg|jpeg|png|js|css)$ { # root /usr/local/nginx/staticFiles/; # expires 1h; #缓存一小时 #} location ~ ^/(images|js|css)/ { root /usr/local/nginx/staticFiles/; expires 1h; } location / { #root html; #index index.html index.htm; #proxy_pass http://localhost:8081; proxy_pass http://caogen_proxy; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
proxy.conf(在Nginx.conf引用了)
# 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和客户的真实ip client_max_body_size 10m; #允许客户端请求的最大单文件字节数 client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数 proxy_connect_timeout 300; #nginx跟后端服务器连接超时时间(代理连接超时) proxy_send_timeout 300; #后端服务器数据回传时间(代理发送超时) proxy_read_timeout 300; #连接成功后,后端服务器响应时间(代理接收超时) proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 32 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 proxy_busy_buffers_size 128k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 128k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
gzip.conf(在Nginx.conf引用了)
gzip on; #开启gzip 默认关闭 gzip_buffers 16 8k; #这是默认的设置 gzip_comp_level 1; #gzip的压缩程度,级别为1到9.级别越高,压缩程序越高,时间越多 gzip_min_length 1k; #gzip压缩功能对大数据压缩效果明显,对小数据有时候会出现越压缩数据越大的情况,所以设置当字节数大于多少的时候才开启压缩,我设置为1kb,默认设置为20kb gzip_types text/plain application/x-javascript text/css application/xml application/javascript; #压缩的常规文件类型 gzip_vary on; #告诉接受方数据经过gzip压缩 gzip_disable "MSIE[1-6]\."; #因为IE6对gzip不支持,所以在IE6及更旧的版本不使用gzip压缩
注意以上我注释掉的一段动静分离的配置
#动静分离 静态文件交给nginx处理 动态交给tomcat #location ~ .*\.(gif|jpg|jpeg|png|js|css)$ { # root /usr/local/nginx/staticFiles/; # expires 1h; #缓存一小时 #}
因为网站的图片分两种,一种图片上作为css而产生的,一种图片上用户动态上传的,作为css的图片上放在项目的images文件夹里,用户上传的图片放在一个文件服务器里面,注释的配置是所有gif,jpg……等类型为后缀的url都会被nginx处理,如果在/usr/local/nginx/staticFiles/文件夹里没有图片,nginx则会返回404。/usr/local/nginx/staticFiles/这个文件夹只存放了js,css和css的图片。所以用户上传的图片都无法查看。
location ~ ^/(images|js|css)/ { root /usr/local/nginx/staticFiles/; expires 1h; }
这是通过文件夹来配置动静分离,用户的图片文件夹不是images,所以我可以这么配置。
如果你们有更好的方法可以一起讨论!
相关文章推荐
- java-模拟tomcat服务器
- i-jetty环境搭配与编译
- nginx代理指定目录
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- 访问Nginx发生SSL connection error的一种情况
- Linux部署Tomcat服务器
- Nginx+Naxsi部署专业级Web应用防火墙
- jenkins------结合maven将svn项目自动部署到tomcat下
- 如何搞定tomcat这只喵~
- CentOS 6.2实战部署Nginx+MySQL+PHP
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- Nginx 学习笔记(一)
- 网站502与504错误分析