nginx配置解释及优化

本文深入探讨了Nginx配置优化的关键点,包括工作进程、静态文件缓存、并发连接数等,并详细解释了HTTP请求如何在Nginx中被处理,包括虚拟主机配置、location表达式的匹配规则及其在实现反向代理和负载均衡中的应用。

配置优化的几项:

1,nginx是基于事件的非阻塞模式的,也就是说一个进程可以处理多个请求,所以worker_processes不必要设置大高,一般小于等于cpu核数

2,静态文件缓存配置,最大缓存数量,文件未使用存活期

open_file_cache max=555350 inactive=20s;

open_file_cache_valid 30s; 每30s去检查一次文件有效

open_file_cache_min_uses 2;  有效期内文件最少使用次数,即20s中需要使用过2过或以上才会认为是需要缓存的。

3,work_connections是并发响应的关键配置,理论上是越大越好。可设置成最大可用sockets数量,这个值*worker_processes=最大客户连接数但使用浏览器访问时,最大客户连接数需要除以2,因为一次请求浏览器会开两个连接,如果是作为反向代理服务器则要除以4,因为代理到真实服务器还会再开2个连接

下面是一个完整的配置的详细说明:

#user  nobody;  #设置使用nginx的用户
worker_processes  1;   #设置工作的进程数,通常设置为cpu个数 或 2倍
#设置错误文件存放路径  notice info 为级别
#error_log  logs/error.log ;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;   #设置pid存放路径(pid是控制系统中的重要文件)
#设置最大连接数
events {
    worker_connections  1024;
}
#http中设置了http请求相关的配置 http中有多个server的配置
http {
    include       mime.types;   #包含其它配置文件 通过这个文件找到请求文件类型与mime的映射关系
    default_type  application/octet-stream;   #指定为二进制流 在上面文件的映射关系中没有找到映射关系的请求文件返回默认的二进制流
    client_max_body_size 10M;
    upstream xxxx{  #设置多个就可以实现负载均衡   将请求分发到下面两个server中 xxxx为自己定义的一个名称
    	 server   xx.xx.xx.xx:8080;
         server   xx.xx.xx.xy:8080;
    }
    #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  logs/access.log  main;   #设置访问日志路径  main为上面定义的日志格式  设置为off可关闭减少IO开销
    error_log    logs/error.log crit #设置为严格级别错误日志才记录  
    sendfile        on;    #启用内核复制模式  应该保持开启达到最快的IO效率
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  30s;   #支持持久连接  不用每次请求都新开连接   所以设置一个连接的超时时间
    #gzip  on;       #开启文件压缩传输   生产环境应该打开 gzip_min_length/gzip_types可设置压缩的最小长度及压缩类别
    server {  # server表示一个虚拟主机,http可有多个server 这个server模块是nginx配置反向代理的模块 
        listen       80;   #监听端口 
        server_name  localhost;   #服务器名称  一个请求过来交给哪个server来处理 由这部分来决定
        #charset utf-8;   #设置字符编码 
        #access_log  logs/host.access.log  main;   #日志文件 
        location / {   #一个server下可有多个locatioin 匹配规则由location后的表达式决定
           proxy_pass         http://xxxx;  #实现反向代理的功能   xxxx是上面upstream的名称 表示转发到upstream中的地址上去
           proxy_set_header   Host             $host;
           proxy_set_header   X-Real-IP        $remote_addr;
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        #error_page  404              /404.html;
        #redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;  #50x错误到定向到50x.html;然后下面配置会去找安装目录下的html文件夹 
        location = /50x.html {
            root   html;    #表示在html路径下找50x.html
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    # 这个server模块是nginx配置虚拟主机的模块  下面配置表示监听某个ip:port以及默认定向地址
    # 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;
    #    }
    #}

    # HTTPS server
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

配置上的第二部分的server是给出默认的nginx虚拟主机配置。首先需要在服务器配置IP地址,然后绑定IP地址与虚拟主机,可以通过配置多个server实现多个网站运行在同一nginx上。(虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台虚拟的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWWFTPEmail等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。--引用其它文章的解释)

一个http请求到达后,根据域名寻找到哪一个虚拟主机来处理,然后再根据域名后的地址匹配location表达式进而选择某一个location的处理规则(locatioin括号内的就是处理规则的描述)

location表达式匹配规则:

location表达式有两种匹配模式:普通字符串匹配,正则匹配

表达式形式为:location [=|~|~*|^~|@] /uri/{...}  中括号为可选

=表示精确匹配,请求必须和后面的uri一模一样

~表示使用正则表达式

~*使用正则且不区分大小写

^~ 不使用正则的匹配

@表示定义一个变量   用得少

匹配的步骤是:

1,先查找 =开头的精确匹配

2,再查找没有[ ]里任何符号的普通匹配,且为最大前缀规则,即以匹配得更精确的为准

3,第二步如果匹配上了也会继续寻找正则匹配,除非第二步使用了 ^* 就会忽略正则匹配了

4,如果正则匹配上了就以第一次正则匹配成功的结果为准(即只要成功匹配到一次就不再向下匹配了),否则以第2步的普通匹配结果为准


【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值