zoukankan      html  css  js  c++  java
  • nginx主要配置

    用户流量经过nginx端的分流到多个tomcat实例上,下面介绍一下nginx常用的配置文件nginx.conf
     
    //运行worker进程的用户
    user  xxx;
    //启动的进程数量,通常设置为和cpu核数一致
    worker_processes  8;
    //worker进程的最大打开文件数限制,需要设置的高,否则文件描述符会不够用。
    worker_rlimit_nofile 102400;

    //错误日志
    error_log  /var/logs/error.log;
    //pid文件
    pid        /var/logs/nginx.pid;

    //events模块包含nginx中关于连接的部分
    events {
        //一个worker进程可以同时打开的最大连接数目,这个数目需要和worker_rlimit_nofile协调。socket占用一个文件描述符
        worker_connections  1024;
        //采用epoll方式处理高并发连接,不写的话会默认选择最好的方式。
        user epoll;
    }


    http {
        //include 作用就是复制文件内容到所在位置
        //文件扩展名与文件类型映射表,nginx根据映射关系,设置http请求响应头的content-type值,在映射表中找不到的时候使用default_type
        include       mime.types;
        default_type  application/octet-stream;

        //log格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        log_format  welove  '$remote_addr [$time_local] $host $request $status $body_bytes_sent request_time: $request_time   upstream_response_time: $upstream_response_time $http_accept_language';

        #access_log  logs/access.log  main;
        access_log   off;

        //linux sendfile api可以减少内核和用户层面的拷贝次数,加快效率。
        sendfile        on;
        #tcp_nopush     on;

        #keepalive_timeout  0;
        keepalive_timeout  65;

        gzip  on;
        gzip_min_length 1k;
        gzip_types text/plain application/x-javascript text/css application/xml application/json;

        //server_tag字段用于设置response里面的Server字段,可以用来隐藏服务器的一些信息
        server_tag UGuess;
        
        deny 11.11.11.11;

        #fastcgi_intercept_errors on;

        upstream welove520 {
            server 127.0.0.1:8080 weight=10;
            server 192.168.1.1:8080 weight=10;
        }

        //定义了虚拟主机
        server {
            //监听的端口
            listen       80;
            //监听的域名
            //nginx基于域名和IP来混合进行定位,当不匹配的时候或者只有一个server的时候默认采用第一个server
            //这里用localhost是不对的(对于我们服务来说),但是由于是默认的server所以没有问题。
            //http://tengine.taobao.org/nginx_docs/cn/docs/http/request_processing.html
            server_name  localhost;
            access_log off;
            //location用于匹配URI
            location / {
                    proxy_pass  http://welove520; //请求转发给welove520指定的服务器列表

                    //设置一些header,后端tomcat工程可以获取这些值
                    proxy_set_header   Host             $host;//
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
                    //限制客户端上传数据的大小,如果需要上传大文件一定要注意用到这个参数,否则数据会被丢弃
                    client_max_body_size       15m;
                    proxy_connect_timeout      150;
                    proxy_send_timeout         150;
                    proxy_read_timeout         150;
                    proxy_next_upstream        error timeout invalid_header http_500;
                    proxy_buffer_size          32k;
                    proxy_buffers              32 64k;
                    proxy_busy_buffers_size    128k;
            }
        }
    }
    在nginx中将流量通过upstream模块导到后端tomcat服务器上,然后在服务器上处理用户请求并返回。

    参考资料:http://tengine.taobao.org/nginx_docs/cn/docs/http/request_processing.html

  • 相关阅读:
    maven学习(十六)——使用Maven构建多模块项目
    jsp页面提示“Multiple annotations found at this line:
    SQL中Truncate语法
    java时间工具类,时间相互转换
    Date转换为LocalDateTime
    新建的maven项目里没有src
    maven-version
    spring-boot-configuration-processor
    python爬取文件时,内容为空
    IntelliJ IDEA 创建的文件自动生成 Author 注释 签名
  • 原文地址:https://www.cnblogs.com/hpf311/p/5069380.html
Copyright © 2011-2022 走看看