博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx初级学习心得
阅读量:6932 次
发布时间:2019-06-27

本文共 3201 字,大约阅读时间需要 10 分钟。

特性

  • 高并发连接: 官方称单节点支持5万并发连接数,实际生产环境能够承受2-3万并发
  • 内存消耗少: 在3万并发连接下,开启10个nginx进程仅消耗150M内存 (15M*10=150M)

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

基本模块

# 使用的用户和组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

可以减少进程间的切换

事件模块

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;    }}

参考资料

转载地址:http://oomjl.baihongyu.com/

你可能感兴趣的文章
Apache配置——通过rewrite限制某个目录
查看>>
简单记事本和简单四则运算计算器源代码(*.h *.cpp main.cpp)
查看>>
Go中运用chan的简单案例
查看>>
busybox工具Linux系统、flash_tools烧录工具
查看>>
RHEL5.5cobbler的配置
查看>>
centos: fail2ban
查看>>
hello,大家好,今后我教大家学java
查看>>
C++对象模型学习——Data语意学
查看>>
linux命令学习(21 22)-more less
查看>>
soft RNRM ping 终端解决
查看>>
广域网链路高可用性案例
查看>>
Exchange2016 高可用性配置及介绍
查看>>
Windows Server2016+SQL Server 2016 Cluster安装及配置
查看>>
实战虚拟化存储设计之二LUN Sizing
查看>>
我的友情链接
查看>>
saltstack模块之file相关模块
查看>>
Linux进程间通信 管道
查看>>
安装JDK8后再安装JDK7出现java -version依然是JDK8的问题
查看>>
vcenter : 在主机的当前连接状况下不允许执行该操作
查看>>
PL/SQL使用技巧
查看>>