ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx与Tomcat安装、配置及优化

2022-01-12 17:03:23  阅读:143  来源: 互联网

标签:匹配 Tomcat server Nginx 正则 html location test 优化


Nginx的安装使用

  • rpm(或pkg)安装,类似于windows安装程序,是预编译好的程序
  • yum(或apt -get)安装
  • 编译安装
    1. 检查和安装依赖项
      yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
    2. configure
    3. make && make install

Nginx的配置

   #顶层配置信息管理服务器级别行为
   worker_processes  1; 
   #event指令与事件模型有关,配置处理连接有关信息
   events {
      worker_connections  1024;
   }
   #http指令处理http请求
   http {
      #mime type映射
      include       mime.types;
      default_type  application/octet-stream;

      sendfile        on;
      #tcp_nopush     on;

      #keepalive_timeout  0;
      keepalive_timeout  65;

      #gzip  on;
      #Server 表示一个虚拟主机,一台服务器可配置多个虚拟主机
      server {
         #监听端口
         listen       80;
         #识别的域名
         server_name  localhost;

         #字符集 与url参数乱码问题有关
         charset utf-8;

         #access_log  logs/host.access.log  main;
        
        #location表达式
        #syntax: location [=|~|~*|^~] /uri/ { … }
        #分为两种匹配模式..普通字符串匹配正则匹配
        #无开头引导字符或以=开头表示普通字符串匹配
        #以~或~*开头表示正则匹配,~*表示不区分大小写
        #多个location时匹配规则
        #总体是先普通后正则原则,只识别URI部分,例如请求为/test/1/abc. do?arg=xxx
        #1.先查找是否有=开头的精确匹配即location = /test/1/abc.do {...}
        #2.再查找普通匹配。以最大前缀为规则。如有以下两个location
        # location /test/ {...}
        # location /test/1/ {...}
        # 则匹配后一项,
        #3.匹配到一个普通格式后,搜索并未结束,而是暂存当前结果,并继续再搜索正则模式
        #4.在所有正则模式location中找到第-个匹配项后,以此匹配项为最终结果
        #所以正则匹配项匹配规则受定义前后顺序影响,但普通匹配不会
        #5.如果未找到正则匹配项,则以3中缓存的结果为最终结果
        #6.如果一个匹配都没有,返回404

        #location =/ {...} 与location / {...} 的差别       #location表达式
        #前一个是精确匹配,只响应/请求。所有/xxx类请求不会以前缀匹配形式匹配到它        
        #而后一个正相反。.所有请求必然都是以/开头,所以没有其它匹配结果时一定会执行到它      
        #location ^~ / {...} ^~意思是非正则。表示匹配到此模式后不再继继正则搜索
        #所有如果这样配置,相当于关闭了正则匹配功能                         
        #因为一个请求在普通匹配规则下没得到其它普通匹配结果时,..最终匹配到这里          
        #而这个^~指令又相当于不允许正则。相当于匹配到此为止/test/abc.jsp       

        location / {
           root html;
           index index.html index.htm;
           # deny all; 拒绝请求,返回403
           # allow all; 允许请求
        }

        location ^~ /test/ {
           deny all; 
        }

        location ~ /test/.+\.jsp$ {
           proxy_pass http://192.168.1.31:8080;
        }

        location ~ \.jsp$ {
           proxy_pass http://192.168.1.32:8080;
        }
        
        #定义各类错误页面
         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;
        }

        # @类似于变量定义
        #error_page  403 http://www.test.com这种定义不允许,所以利用@实现
        error_page  403 @page403;
        location @page403 {
            proxy_pass   http://www.test.com;
        }
      }

       # another virtual host using mix of IP-, name-, and port-based configuration
       #
       #server {
       #    listen       8000;
       #    listen       somename:8080;
       #    server_name  somename  alias  another.alias;
       
       #    location / {
       #        root   html;
       #        index  index.html index.htm;
       #    }
       #}
   }

Nginx的优化

    # nginx不同于apache服务器,当进行了太量优化设置后会魔术般的明显性能提升效果
    # nginx在安装完成后太部分参数就已经是最优化了,我们需要管理的东西并不多

    #user nobody; 

    #阻塞和非阻塞网络模型:
    #同步阻塞模型,一请求一进(线)程,当进(线)程增加到一定程度后
    #更多CPU时间浪费到切换进(线)程,性能急剧下降,所以负载率不高
    #Nginx基于事件的非阻塞多路复用(epoll或kquene)模型
    #一个进程在短时间内可以响应大量的请求
    #建议值<= cpu核心数量,一般高于cpu数量不会带好处,也许还有进程切换开销的负面影响
    worker_processes 4;

    #将worker_ processes绑定到特定cpu上,避免进程在cpu间切换的开销
    worker_cpu_affinity 0001 0010 0100 1000 
    #8内核4进程时的设置方法worker_ cpu_ affinity 00000001 00000010 00000100 10000000

    #每进程最大可打开文件描述符数量(linux上文件描述符比较广义,网络端口、设备、磁盘文件都是)
    #文件描述符用完了,新的连接会被拒绝,产生502类错误
    # linux最太可打开文件数可通过ulimit -n FILECNT或 /etc/security/limits. conf配置
    #理论值 系统最大数量/进程数。但进程间工作量并不是平均分配的,所以可以设置的太一些
    worker_rlimit_nofile 655350

    #error_log logs/error.log;
    #error_log logs/error.log notice;
    #error_log logs/error.log info;
    #pid logs/nginx.pid; 

    events {
        #并发响应能力的关键配置值
        #每个进程允许的最大同时连接数,work_connectins * worker_processes = maxConnection;
        #要注意maxConnections不等同于可响应的用户数量,
        #因为一般一个浏览器会同时开两条连接,如果反向代理,nginx到后端服务器的连接也要占用连接数
        #所以做静态服务器时,一般maxClient = work_connectins * worker_processes / 2
        #做反向代理服务器时maxClient = work_connectins * worker_processes / 4
        
        #这个值理论上越大越好,但最多可承受多少请求与配件和网络相关,也可最大可打开文件,最大可用sockets数量
        work_connectins 500;
        
        #指明使用epoll 或 kquene (*BSD)
        use epoll
        
        #备注:要达到超高负载下最妊的网络响应能力还有必要优化与网络相关的1inux内核参数
    }

    http{
       include       mime.types;
       default_type  application/octet-stream;

        #关闭此项可减少I0开销,但也无法记录访问信息,不利用业务分析,一般运维情况不建议使用
        access_log off
        #只记录更为严重的错误日志,可减少I0压力
        error_log logs/error.log crit;
        #access_log logs/access.log main
        
        #启用内核复制模式,应该保持开启达到最快I0效率
        sendfile on;
        
        #简单说,启动如下两项配置,会在数据包达到一定大小后再发送数据
        #这样会减少网络通信次数,隆低阻塞概率,但也会影响响应及时性
        #比较适合王文件下载这类的太数据包通信场景
        #tcp_nopush on; 
        #tcp_nodelay on|off; on禁用Nagle算法

         #keepalive_timeout  0;

        # HTTP1.1支持持久连接alive                         
        #降低每个连接的alive时间可在一定程度上提高可响应连接数量,所以一般可适当隆低此值  
        keepalive_timeout  30s;

        #启动内容压缩,有效降低网络流量
        gzip on;
        #过短的内容压缩效果不佳,压缩过程还
        gzip_min_length 10
        #可选值1~9,压缩级别越高压缩率越
        gzip_comp_level 4;
        #压缩的内容类别          
        gzip_types text/pl
                          
        #静态文件缓存                      
        #最大缓存数量,文件未使用存活期             
        open_file_cache max=655350 inactive=20s;
        #验证缓存有效期时间间隔                 
        open_file_cache_valid 30s;   
        #有效期内文件最少使用次数                
        open_file_cache_min_uses 2;   

       server {
          listen       80;
          server_name  localhost;

          location / {
             root html;
             index index.html index.htm;
          }
       }

    }

Tomcat的安装使用

到http://tomcat.apache.org下载,解压

tomcat的安装目录介绍:

  • bin:可以执行文件
  • conf:tomcat服务器的配置文件
  • lib:tomcat启动后需要依赖的jar包
  • logs:tomcat工作之后的日志文件
  • webapps:是tomcat布暑工程的目录。
  • work:jsp文件在被翻译之后,保存在当前这个目录下,session对象被序列化之后保存的位置

Tomcat的配置与优化

  • 内存使用配置
    bin目录下catalina.bat(win)/catalina.sh(linux)
    通过内存设置充分利用服务器内存
    -server模式启动应用慢,但可以极大程度提高运行性能
    java8开始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不会再有java.lang.OutOfMemoryError: PermGen space,可以不设置
    headless=true适用于linux系统,与图形操作有关,如生成验证码,含义是当前使用的是无显示器服务器,应用中如果获取系统显示有关参数会抛异常
    可通过jmap -heap proccess_id查看设置是否成功

windows下设置方法
set JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true
linux下设置方法
JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true"

  • 最大连接数配置
    conf目录下server.xml
    <!-- protocol启用nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步io) -->
    <!-- minSpareThreads最小空闲连接线程数 --> 
    <!-- maxThreads最大连接线程数 -->
    <!-- acceptCount允许的最大连接数,应大于等于maxProcessors -->
    <!-- enableLookups 如果为true , requst.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名 -->
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
    		connectionTimeout="20000"
    		redirectPort="8443"
    		maxThreads="500"
    		minSpareThreads="100"
    		maxSpareThreads="200"
    		acceptCount="200" 
    		enableLookups="false"
    />

标签:匹配,Tomcat,server,Nginx,正则,html,location,test,优化
来源: https://www.cnblogs.com/aiia/p/15792711.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有