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

本文共 3451 字,大约阅读时间需要 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.rpm
    yum -y install nginx
  • 启动Nginx并关闭防火墙:

    systemctl start nginx
    systemctl stop firewalld.service
    systemctl 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/

    你可能感兴趣的文章
    Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
    查看>>
    nodejs + socket.io 同时使用http 和 https
    查看>>
    NodeJS @kubernetes/client-node连接到kubernetes集群的方法
    查看>>
    Nodejs express 获取url参数,post参数的三种方式
    查看>>
    nodejs http小爬虫
    查看>>
    nodejs libararies
    查看>>
    nodejs npm常用命令
    查看>>
    nodejs npm常用命令
    查看>>
    Nodejs process.nextTick() 使用详解
    查看>>
    nodejs 创建HTTP服务器详解
    查看>>
    nodejs 发起 GET 请求示例和 POST 请求示例
    查看>>
    NodeJS 导入导出模块的方法( 代码演示 )
    查看>>
    nodejs 开发websocket 笔记
    查看>>
    nodejs 的 Buffer 详解
    查看>>
    nodejs 读取xlsx文件内容
    查看>>
    nodejs 运行CMD命令
    查看>>
    Nodejs+Express+Mysql实现简单用户管理增删改查
    查看>>
    nodejs+nginx获取真实ip
    查看>>
    nodejs-mime类型
    查看>>
    NodeJs——(11)控制权转移next
    查看>>