• nginx配置文件详解


    默认配置

    user nginx nginx;
    #启动用户和组
    
    worker_processes  1;         
    #启动工作进程数数量,与服务器CPU核心数相匹配
    
    worker_cpu_affinity auto;
    #将Nginx工作进程自动识别绑定在指定的CPU核心上,避免在不同的CPU上来回切换(频繁切换CPU会造成内核在内存中来回进行内存的注册与回收)
    
    error_log  logs/error.log  error;       
    #指定错误日志级别
    
    pid        logs/nginx.pid;     
    #指定PID文件路径
    
    worker_priority -10;           
    #工作进程nice值,-20~19;如果服务器有多个服务,想让nginx占用更多的内存时间片(优先调度),就调低一些
    
    worker_rlimit_nofile 65536;    
    #nginx的所有连接,客户端及代理服务器;实际的并发连接数不能超过系统级别的最大打开文件数的限制,需要与ulimt相同
    

    events模块(事件设置模块)配置

    worker_connections  65536;            
    #单个nginx工作进程可以接受的最大并发;作为反向代理的时候为(worker_connections * worker_processes)/2;因为一个用户处理请求需要建立两次连接,所以一个用户的请求需要占用两个文件描述符;需要配合worker_rlimit_nofile及ulimit使用
    
    use epoll;
    #使用epoll事件驱动模型,默认不写就是epoll
    
    accept_mutex on;
    #优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置
    
    multi_accept on;      
    #默认为一个工作进程只能一次接受一个新的网络连接,打开后可以同时接受多个
    

    http模块配置

    一个http模块可以包含多个server模块,一个server模块就是一个基于域名的虚拟主机;一个IP可以对应多个域名
    
    include       mime.types;   
    #nginx所支持的mime类型;包含文本、图像、音频、视频以及其他应用程序专用的数据,对应的文件用对应的应用程序打开
    
    default_type  application/octet-stream;    
    #不在mime类型里面的数据,默认为下载
    
    sendfile      on;
    #数据被kernel buffer直接拷贝到另外一个与socket相关的kernel buffer,然后直接发送给协议栈,减少了内核空间到用户空间的复制;sendfile只有作为web服务器的时候使用,加快静态资源传输;反向代理时,都是由后端服务器进程处理,文件渲染及连接数据库等
    
    keepalive_timeout  65;
    #长连接超时时间,单位是秒;如果http模块下的server中也进行配置,以server优先
    
    access_log  /var/log/nginx/access.log  main;    
    #开启nginx访问日志,指定日志格式;对所有server有效,如果server中定义,则server优先级高
    
    tcp_nopush     on;
    #配合sendfile一起使用;如果一个报文不够一个包的最大值,那么CPU会对报文进行封装头部和尾部,直接发送过去;一个数据包最大1500个字节;开启tcp_nopush,内核会等够一个包的最大值之后再发送出去;但用户访问可能会出现延迟,但会节省CPU利用率
    
    tcp_nodelay   off;
    #在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认On时,不延迟发送,立即发送用户相应报文。与tcp_nopush配合使用  
       
    server_tokens off;   
    #隐藏Nginx版本    
                
    gzip on;     
    #开启文件压缩;对回复的数据报文进行压缩;CPU对报文进行封装压缩,会消耗一定的CPU资源    
       
    gzip_comp_level 5;   
    #设置压缩级别1——9,一般设置到3——5;压缩级别越高,压缩比也就越高,CPU消耗资源越大    
       
    gzip_disable "MSIE [1-6].";    
    #禁止对msie的浏览器进行压缩;msie浏览器不支持压缩    
    
    gzip_min_length 1k;    
    #当文件小于1K时不进行压缩    
       
    gzip_http_version 1.1;   
    #启用压缩时,协议的最小版本,默认是HTTP/1.1;当http协议版本低于1.1时不进行压缩
    
    gzip_types text/plain application/javascript application/x-javascript text/cssapplication/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;    
    #指定针对那些类型的资源进行压缩,text/html不用添加,默认添加了,指定添加反而报错
    
    gzip_vary on;   
    #告知客户端启用压缩了
    
    gzip_buffers 32 4k;
    #向服务器申请的压缩缓存的空间大小;缓存大小为数量*大小(4K);还可以设置为16 8K;如果服务器的压缩文件大小为都几乎在4K以上,则设置每个缓存大小为8K;如果服务器的压缩文件几乎都是小资源(低于4K),就算用8K的缓存,一个小资源也会占用一整个8K的缓存,所以如果都是小资源则选择4K,如果大资源较多,则选择8K
    
    include /app/nginx/conf/conf.d/*.conf;
    #让nginx识别指定目录的以.conf结尾的文件;读取http模块的子配置文件
    

    http模块中定义虚拟主机(http模块中的server模块)

       server {        #可以定义多个虚拟主机
           listen       80;      #默认监听本机所有IP的80端口;也可以写成xxx.xxx.xxx.xxx:80
           server_name  example.com *.example.com;   #公网域名;可以设置多个域名指定同一个站点进行资源定位,支持正则表达式;也可以写成
                                                      ~^www.sited+.net$这种形式,使用正则表达式时,表达式前面必须加~;如果这几个域名都不匹
                                                      配,可以指定default_server,所有域名都不匹配,则显示默认主站点页面;default_server设置在
                                                      主配置文件的server下,不要设置在子配置文件的server种
           charset utf-8;     #必须设置编码格式
           access_log  logs/host.access.log  main;   #每个server(域名)可以单独指定访问日志,日志格式是http模块中的格式        
           keepalive_requests 3;  #在一次长连接上累计所允许请求的资源的最大数量,默认为100次,不是并发;如果一次长连接累计请求资源数量达到设置的最大
                                   值,则服务器主动和客户端断开链接;网站小资源比较多,则调到300-500左右,但也不能调到太多;这个设置主要是避免有太 
                                   多的长连接;可以设置在http模块和server中,server优先级高,server中设置则使用server中的配置,如果server未设置,
                                   则使用http中的默认设置
           keepalive_timeout  65 65;  #设置超时时长,后面的65为用户可以看到的超时时长,服务端设置的超时时长可以和用户看到的超时时长不一致
           location / {    #定位站点位置
               root   html;   
               index  index.html index.htm;
           }
    
           error_page   500 502 503 504 404 /50x.html;   #遇到这些错误状态码时,用指定的提示页面替代原有的报错页面;如果访问指定域名的未存在资源
                                                          时,想向用户提供报错页面,则就把这一行复制到指定域名的server下即可
           location = /50x.html {     #指定错误页面的文件名和路径
               root   html;
           }
    
           location  /host.pass {       #当访问网站根下的这个资源,全部拒绝
               deny  all;
           }
    
       }
    

    实现虚拟主机

    server {
       listen 80;
       server_name www.xxxmb.net;
       location /linux {
           root /data/nginx/mobile/html;
           index index.html;
       }
       location /python {
           root /data/nginx/mobile/html;
           index index.html;
       }
    }
    
    server {
       listen 80;
       server_name www.xxxpc.net;
       location /linux {
           root /data/nginx/pc/html;
           index index.html;
       }
       location /python {
           root /data/nginx/pc/html;
           index index.html;
       }
    }
    创建两个虚拟主机;一个IP对应两个域名
  • 相关阅读:
    python正则表达式中括号的作用,形如 "(w+)s+w+"
    python中的分号(“;”)
    连接数据库报错Access denied for user 'root'@'localhost' (using password:YES)
    python中,字符串前的u,b,r字符的含义
    pycharm连接数据库报错Access denied for user 'root'@'localhost' (using password:YES),以及wampserver 2/3个服务器正在运行 问题
    制作手风琴效果时发现新大陆,好吧,其实是一个bug
    行内元素的上下margin 和 img元素的上下margin
    Django——Model的使用
    django book学习问题记录
    psql命令行快速参考
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/12081438.html
Copyright © 2020-2023  润新知