资讯专栏INFORMATION COLUMN

nginx初级学习心得

godlong_X / 668人阅读

摘要:语法缺省值指定工作进程数。语法缺省值制定错误日志的存放位置和级别。默认情况下会在时找出最适合系统的事件模型。语法默认值作用域指定的目录是准确的,是指定目录的上级目录,并且该上级目录要含有指定名称的同名目录。

特性

高并发连接: 官方称单节点支持5万并发连接数,实际生产环境能够承受2-3万并发

内存消耗少: 在3万并发连接下,开启10个nginx进程仅消耗150M内存 (15M*10=150M)

nginx原理(Unix I/O模型简介)

初探nginx架构

基本模块
# 使用的用户和组
user nobody nobody;
# 指定工作进程数
# 与CPU数目一致
worker_processes 2;
# 错误日志
# 可以使用 [ debug | info | notice | warn | error | crit ]  参数
error_log /var/log/nginx/nginx_error.log crit;
# 指定 pid 存放的路径  
pid /usr/local/nginx/nginx.pid

user
语法: user user [group]
缺省值: nobody nobody
指定Nginx Worker进程运行用户,默认是nobody帐号。

worker_processes
语法: worker_processes number
缺省值: 1
指定工作进程数。nginx可以使用多个worker进程。

error_log
语法: error_log file [ debug | info | notice | warn | error | crit ]
缺省值: /logs/error.log
制定错误日志的存放位置和级别。

pid
语法: pid file
进程id存储文件。可以使用 kill -HUP cat /var/log/nginx.pid/ 对Nginx进行配置文件重新加载。

include
语法: include file | *
缺省值: none
include 指令还支持像下面配置一样的全局包含的方法,例如包含一个目录下所有以".conf"结尾的文件: include vhosts/*.conf;

worker_cpu_affinity
绑定cpu可以减少进程间的切换

事件模块
events {
    # 使用epoll模型
    use epoll;
    # 每个worker的最大连接数  
    worker_connections 1024;
}

use
语法:use [ kqueue | rtsig | epoll | /dev/poll | select | poll | eventport ]
如果在./configure的时候指定了不止一种事件模型,那么可以设置其中一个,以便告诉nginx使用哪种事件模型。
默认情况下nginx会在./configure时找出最适合系统的事件模型。
事件模型是指Nginx处理连接的方法。

worker_connections
语法:worker_connections number
通过worker_connections和worker_proceses可以计算出maxclients: max_clients = worker_processes * worker_connections
作为反向代理,max_clients为: max_clients = worker_processes * worker_connections/4 ,因为浏览器访问时会通过连接池建立多个连接。

HTTP模块
http {
    #配置一台虚拟机
    server {
        listen          80;
        server_name     www.linuxidc.com;
        access_log      logs/linuxidc.access.log main;
        location / {
            index index.html;
            root  /var/www/linuxidc.com/htdocs;
        }
    }
}

三个作用域:http, server, location

server
语法:server {...}
作用域: http
配置一台虚拟机。

listen
语法: listen address:port [ default [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ]
默认值: listen 80
作用域: server
指定当前虚拟机的监听端口。

location
语法: location [=|~|~*|^~] /uri/ { ... }
作用域: server
配置访问路径的处理方法。

root
语法: root path
默认值:root html
作用域:http, server, location
alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。

alias
语法: alias file-path|directory-path;
作用域: location
该指令设置指定location使用的路径.注意它跟 root 相似,但是不改变文件的根路径,仅仅是使用文件系统路径

区别:

location /abc/ {  
    alias /home/html/abc/;  
}  

在这段配置下,www.xxx/abc/a.html就指定的是/home/html/abc/a.html。这段配置亦可改成

location /abc/ {  
    root /home/html/;  
}  

这样,nginx就会去找/home/html/目录下的abc目录了,得到的结果是相同的。

示列配置 反向代理
http {
    # 负载均衡配置,可以配置多个
    upstream WB {
        # 设置负载均衡策略为ip_hash,会根据请求来源ip做hash,同一个C类地址网段hash值相同
        ip_hash;
        # 反向代理到后台应用服务器节点上
        server 192.168.4.1:8080;
        server 192.168.4.2:8080;
    }
    server {
        location / {
            proxy_connect_timeout 3;
            proxy_send_timeout 30;
            proxy_read_timeout 30;
            # 配置所有请求都会分发到 WB 这个负载均衡器上
            proxy_pass http://WB/;
            expires 1d;
        }
    }
}    
https
server {
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/server.crt;
    ssl_certificate_key /usr/local/nginx/server.key;
    error_page 497 https://$host$uri?$args;
}
缓存静态化文件
server {
    location ~* .(gif|jpg|jpeg|png|css|js|ico|html)$ {
        root /usr/local/nginx/html/;
        expires 3d;
    }
}
参考资料

官方文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40572.html

相关文章

  • 使用jeecg-boot心得

    摘要:使用心得随着信息技术的飞速发展,系统架构设计面对更专业软件开发职责更明确的发展。同时利用开源技术,吸引业界优秀人才的共同努力下,系统功能越来越完善。使成为很完善很强大的一个平台。执行启动时,报错误。 使用jeecg-boot心得    随着信息技术的飞速发展,系统架构设计面对更专业、软件开发职责更明确的发展。如今流行的微服务、前后端分离、Docker容器虚拟化待新技术,Jeecg-bo...

    wyk1184 评论0 收藏0
  • 如何成为专业的PHP开发者

    摘要:如何才能成为一名专业的开发者资深开发者在其博客上分享了一些心得。要想成为一个专业的程序员,首先要成为一个中级程序员。永远不要低估陪伴的力量结论当你专注于实践上面所提到各种方法的时候,你就在成为专业开发者的路上。 如何才能成为一名专业的PHP开发者?资深Web开发者Bruno Skvorc在其博客上分享了一些心得。 showImg(http://segmentfault.com/img...

    617035918 评论0 收藏0
  • react融合进系统的体验

    摘要:控制数据流属于最强的开发规范,必定会给开发业务的同学带来巨大的思维挑战,从系统整体质量和维护性来看,必须牺牲业务开发的编程自由度。 引入的背景 在一个庞大的商业系统中引入react这种数据驱动的模式。 希望能够一点点重构去替换以前的模块,逐步的将系统重要部分底层框架替换成react。 同事实践的心得 以下内容都摘自同事使用后的一些感想 心得一 从过程化开发向面向数据的开发转化。后者要...

    Yangder 评论0 收藏0
  • 前端培训-初级阶段-场景实战(2019-06-13)-Nginx代理正确食用方式

    摘要:前端最基础的就是。我这边预期准备进入中级阶段,中间还是会穿插一些实战。语法精确匹配,匹配成功,则停止搜索正则不能有嵌套的。指令会根据在配置文件中出现的顺序依次执行,可以使用来终止接下来的处理。如果以或者或者,则停止处理,立刻重定向。 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTM...

    Harpsichord1207 评论0 收藏0

发表评论

0条评论

godlong_X

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<