• Nginx 配置


    nignx基础配置及说明

    #window 下可以不指定用户
    #user nobody;
    #linux 下必须指定
    user administrator administrators; #配置用户或者组,默认为nobody;用于显示谁运行的nginx

    #根据cpu内核决定数量
    worker_processes 2;


    events {
    #设置单个工作进程最大连接数102400
    worker_connections 102400;
    #(惊群现象)优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off,因此nginx刚安装完以后要进行适当的优化。
    accept_mutex on;
    #打开同时接受多个新网络连接请求的功能。
    multi_accept on;
    #使用epoll事件驱动,因为epoll的性能相比其他事件驱动要好很多;其他事件驱动模型,select|poll|kqueue|resig|/dev/poll|eventport
    use epoll;
    }


    http {
    #文件扩展名与文件类型映射表 MIME——Multipurpose Internet Mail Extension(多用途因特网邮件扩展)
    #mime.types可在同nginx.confx目录下看到,即支持多种数据类型
    include mime.types;
    #默认文件类型,application/octet-stream为http前后台交互类型,这个类型表示他是一个字节流,浏览器默认处理字节流的的方式就是下载,所以他是主要用于下载
    default_type application/octet-stream;
    指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息
    #fastcgi_intercept_errors on#默认off
    proxy_intercept_errors
    #sendfile解决了传统的文件传输里面(read/write方法),
    #传统的文件传输方式:
    #1.调用read函数,文件被copy到内核缓冲区
    #2.read函数返回,文件数据从内核缓冲区copy到用户缓冲区
    #3.write函数调用,将文件数据从用户缓冲区copy到内核与socket相关的缓冲区
    #4.数据从socket缓冲区copy到相关协议引擎。
    #sendfile文件传输方式:
    #1.sendfile系统调用,文件数据被copy至内核缓冲区
    #2.再从内核缓冲区copy至内核中socket相关的缓冲区
    #3.最后再socket相关的缓冲区copy到协议引擎
    sendfile on;
    server_names_hash_bucket_size 128;
    #指定来自客户端请求头的headerbuffer大小,设置为32KB
    client_header_buffer_size 32k;
    #指定客户端请求中较大的消息头的缓存最大数量和大小,这里是4个32KB
    large_client_header_buffers 4 32k;
    #上传文件大小
    client_max_body_size 356m;
    #nginx的HttpLog模块指定,指定nginx日志的输出格式,输出格式为access
    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    #access日志存在未知
    access_log /var/log/nginx/access.log access;
    #开启高效模式文件传输模式,将tcp_nopush和tcp_nodely两个指另设置为on,用于防止网络阻塞。
    sendfile on;
    tcp_nopush on;
    tcp_nodely on;
    #链接超时时间 默认65s;
    keepalive_timeout 65;


    开启缓存
    proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;



    #负载均衡实现
    #1)、轮询(默认)
      #每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
    #2)、weight
      #指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
    #2)、ip_hash
      #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
    #3)、fair(第三方)
      #按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    #4)、url_hash(第三方)
    upstream tomcat_server{
    #实现多台服务器之间session的共享
    ip_hash;
    server 127.0.0.1:8081 weight=1;
    server 127.0.0.1:8080 weight=1;
    }
    server {
    #单链接请求上限次数。
    keepalive_requests 120;
    #监听端口
    listen 80;
    #监听地址
    server_name localhost;


    #请求的url / 全匹配; 过滤条件通过正则表达是书写
    location / {
    #启用proxy_cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存
    proxy_cache my_cache;
    #请求转向tomcat_server
    proxy_pass http://tomcat_server;
    #拒绝该IP访问
    #deny 127.0.0.1;
    #允许该ip访问
    #allow 136.19.111.5;
    }
    #对jsp和do结尾的url也去访问tomcat服务
    location ~ .(jsp|do)$ {
    proxy_pass http://tomcat_server;
    }

    #对js、css、png、gif结尾的都去访问根目录下查找
    location ~ .(js|css|png|gif)$ {
    root F:/javaweb;
    }

    #错误日志存放位置
    #错误日志级别:常见的错误日志级别有[debug | info | notice | warn | error | crit | alert | emerg],级别越高记录的信息越少。
    error_log logs/error_www.abc.com.log error;
    #报错50?错误访问本地html/50x页面
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root html;
    }
    #报错404错误访问本地html/404页面 自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面
    error_page 404 /404.html;
    location = /404.html{
    root html;
    }
    //没有适当的处理方法nginx不会拦截错误;
    }



    }

    本文章是我结合网上资料和一些大神的文章总结出来的,若是有哪些地方有错误,希望能指出,我会及时修改。谢谢

  • 相关阅读:
    web.xml中 error-page的正确用法
    5.项目数据库设计--人事管理系统
    mod_jk是Apache服务器的一个可插入模块
    jBox使用方法
    ApacheHttpServer出现启动报错:the requested operation has failed解决办法
    ApacheHttpServer修改httpd.conf配置文件
    redis client protocol 分解
    Andorid Async-HttpClient阅览
    HDU-2857-Mirror and Light(计算几何)
    xcode armv6 armv7 armv7s arm64
  • 原文地址:https://www.cnblogs.com/AsaltedFish/p/9565255.html
Copyright © 2020-2023  润新知