博客
关于我
Nginx+ tomcat环境搭建
阅读量:612 次
发布时间:2019-03-12

本文共 3376 字,大约阅读时间需要 11 分钟。

动静分离实践指南

动静分离是什么?

动静分离是一种通过Nginx反向代理技术,将传入的请求根据文件类型分类处理的方法。Nginx会根据请求地址和文件扩展名,自动判断是静态资源还是动态资源。如果是静态资源(如图片、HTML、JavaScript、CSS等),Nginx会直接将文件响应;如果是动态资源(如JSP、Servlet等),则转发给后端Tomcat服务器处理。这种方式能够有效降低后端服务器的负载压力,提升网站访问速度。

为什么进行动静分离?

传统的应用服务器(如Tomcat)需要处理所有的请求,包括静态资源和动态资源,这会导致服务器负载过大。通过Nginx进行动静分离,可以将静态资源的处理转移到前端服务器,由Nginx缓存或直接响应,从而减轻后端服务器的压力。这种配置方式尤其适用于需要高并发访问的场景。

动静分离的核心实现方式

动静分离的实现通过以下几个关键环节:

  • Nginx安装与配置

    • Nginx作为反向代理服务器,负责识别请求类型并分发处理。
    • 配置<Location />{...}</Location>块,指定所有请求默认转发至后端服务器。
    • 修改<Location ~ .*.(htm|html|gif|jpg|jpeg|...)>,指定Nginx处理特定类型的静态资源文件。
  • 静态资源处理配置

    • 为不同类型文件设置不同缓存策略。
    • 申明Nginx获取静态资源的根目录。
    • 配置缓存规则,设置文件的最大缓存时间。
  • 动态资源转发

    • 配置<Location ~ .*\.jsp>及其他动态资源类型,自动转发至Tomcat服务器。
    • 配置ProxyPass指令,指定后端服务器地址和端口。
  • Nginx+Tomcat的实际应用

    为了实现动静分离,我按照以下步骤操作。

    服务器环境配置

    • Nginx服务器IP:192.168.2.20
    • 后端Tomcat服务器IP:192.168.2.21、192.168.2.22
    • 服务器操作系统:CentOS 7

    Nginx安装步骤

  • 添加 CentOS 7 的Nginx YUM仓库并安装软件包:

    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum -y install nginx
  • 启动Nginx并关闭防火墙:

    systemctl start nginxsystemctl stop firewalld.servicesystemctl disable firewalld.service
  • curlyfoundation 搭建Nginx配置文件:

    events {    worker_connections 1024;}http {    include /etc/nginx/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 /var/log/nginx/access.log main;    sendfile on;    tcp_nopush on;    keepalive_timeout 65;    include /etc/nginx/conf.d/*.conf;}
  • 配置/etc/nginx/conf.d/www.conf文件:

    server {    listen 80;    server_name hs.com;    location / {        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass http://myhsh;        proxy_redirect off;        client_max_body_size 10m;        client_body_buffer_size 128k;        proxy_connect_timeout 300;        proxy_send_timeout 300;        proxy_read_timeout 300;        proxy_buffer_size 4k;        proxy_buffers 4 32k;        proxy_busy_buffers_size 64k;        proxy_temp_file_write_size 64k;        proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;    }}
  • 配置Nginx动静分离:

  • 完整的Nginx配置文件可按以下方式填写:

    /* 配置总体服务器设置 */user nobody;worker_processes 2;events {    worker_connections 1024;}/* 网站访问设置 */server {    listen 80;    server_name hs.com;    charset utf-8;    # 静态资源处理    location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma) {        root /usr/local/webapps;        expires 30d;    }    # JavaScript和CSS处理    location ~ .*\.(js|css) {        root /usr/local/webapps;        expires 1h;    }    # 动态资源转发至Tomcat    location / {        proxy_pass http://myhsh;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header Host $host;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;        proxy_next_upstream http_502 http_504 error timeout invalid_header;    }    error_page 500 502 503 504 /50x.html;    location /50x.html {        root html;    }}/*Tomcat后端配置 */upstream myhsh {    server 192.168.2.20:8080 weight=1;    server 192.168.2.21:8080 weight=1;    server 192.168.2.22:8080 weight=1;}

    kernel版本与用户权限设置

    安装完成后,请确保Nginx工作进程用户权限合理,并根据实际需求调整缓存时间限。建议在开发成功后,部署至生产环境中进行后续优化和性能评估。

    转载地址:http://kfhxz.baihongyu.com/

    你可能感兴趣的文章
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>