一.Nginx的特性和一些知识点

1.基本功能服务器

处理静态文件(静态资源的web),支持 反向代理服务器,支持缓存、负载均衡、支持FastCGI

模块化机制,非DOS机制,支持多种过滤器,如gzip,ssl和用来完成图形大小调整的图像模块

支持SSL

2.扩展功能

基于名称和IP做虚拟主机

支持keepalive

支持平滑配置更新和程序版本升级

定制访问日志,支持使用日志缓存以提高性能

支持URL rewrite

支持路径别名

支持基于IP和用户的认证

支持速率限制,并发数限制等

3.Nginx 的基本框架

一个master,生成一个或多个worker

事件驱动:kqueue,epoll,/dev/poll

消息通知:select poll

支持sendfile,sendfile64

支持mmap

4.Nginx 的优点:

1.在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

2.Nginx 作为负载均衡服务器:Nginx 可以作为HTTP代理服务器对外进行服务。Nginx采用C进行编写,在系统资源开销还是CPU使用率效果比较好;

3.作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器;

4.    Nginx 是一个 [#installation 安装] 非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs 非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级 .

5.Nginx 的事件模型

Nginx支持如下处理连接的方法(I/O复用方法),这些方法可以通过use指令指定。

Select 标准方法

Poll标准方法

Kqueue 高效方法。

二.Nginx 的配置文件简单介绍

1.正常运行的必备配置

a. user username [groupname]

以那个用户身份运行,可以在配置文件中指定,如果没有指定则以编译时的用户为运行用户

b. pid /path/to/pidfile_name

指定nginx的pid文件

c. worker_rlimit_nofile #

指定一个worker进程所能打开的最大句柄数

d. worker_rlimit_sigpending #

设定每个用户能够发往worker进程的信息的数量

2.优化性能相关的配置

a. worker_procrsses #

worker进程的个数,通常其数值应该为cpu的物理核心数减1或2

b. worker_cpu_affinity cpumask .....

用来绑定cpu的,比如

worker_processes 4;

worker_cpu_affinity 0001 0010 0100 1000;

c. ssl_engine device

在存在ssl硬件加速器的服务器上,指定所使用的ssl硬件加速设备

d. timer_resolution t

每次内核事件调用返回时,都会使用gettimeday()来更新nginx缓存时钟,timer_resloution用来定义每隔多久才会由gettimeday()更新一次缓存时钟,x86-64系统上,gettimeday()代价已经很小,可以忽略此配置

c. worker_priority nice

-20到19之间的整数值,数值越小越优先被调用

3. 跟事件相关的配置

a. accept_mutex on | off

是否打开nginx的负载均衡器,此锁能够让多个worker轮流地、序列化的与新的客户端请求建立连接;

b. lock_file /path/to/lock_file

锁文件的位置

c. accept_mutex_delay #ms

使用accept锁以后,只有一个worker能取得锁 ,一个worker进程为取得accept锁的等待,即用户建立等待的时间,如果某worker进程在某次试图取得锁时失败了,则至少要等#ms才能再一次请求锁

d. multi_accept on | off

是否允许一次性地响应多个用户请求,默认为off

三. Nginx安装完毕后,会有响应的安装目录,安装目录里nginx.conf为nginx的主配置文件,

nginx主配置文件分为4部分,main(全局配置)、server(主机设置)、

upstream(负载均衡服务器设)和location(URL匹配特定位置的设置),

这四者关系为:server继承main,location继承server,

upstream既不会继承其他设置也不会被继承。

接下来分析nginx 的主配置文件的各项参数

首先切换到配置文件中

**************************************************************

Nginx的main(全局配置段)文件

**************************************************************

[root@stu21 ~]# vim /etc/nginx/nginx.conf

user nginx nginx; //指定nginx运行的用户及用户组为nginx,默认为nobody

worker_processes 2; //开启的进程数,一般跟逻辑cpu核数一致

error_log logs/error.log notice; //定于全局错误日志文件,级别以notice显示。还有debug、info、warn、error、crit模式,debug输出最多,crit输出最少,更加实际环境而定。

pid logs/nginx.pid; //指定进程id的存储文件位置

worker_rlimit_nofile 65535; //指定一个nginx进程打开的最多文件描述符数目,受系统进程的最大打开文件数量限制

events {

use epoll; 设置工作模式为epoll,除此之外还有select、poll、kqueue、rtsig和/dev/poll模式

worker_connections 65535; //定义每个进程的最大连接数 受系统进程的最大打开文件数量限制

}

#**********************************************************************************************

Nginx的HTTP服务器配置段,Gzip配置。

#************************************************************************************************

http {

*****************************以下是http服务器全局配置*********************************

default_type application/octet-stream; //核心模块指令,这里默认设置为二进制流,也就是当文件类型未定义时使用这种方式

//下面代码为日志格式的设定,main为日志格式的名称,可自行设置,后面引用。

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

client_max_body_size 20m; //设置允许客户端请求的最大的单个文件字节数

client_header_buffer_size 32k; //指定来自客户端请求头的headebuffer大小

client_body_temp_path /dev/shm/client_body_temp; //指定连接请求试图写入缓存文件的目录路径

large_client_header_buffers 4 32k; //指定客户端请求中较大的消息头的缓存最大数量和大小,目前设置为4个32KB

sendfile on; //开启高效文件传输模式

tcp_nopush on; //开启防止网络阻塞

tcp_nodelay on; //开启防止网络阻塞

keepalive_timeout 65; //设置客户端连接保存活动的超时时间

client_header_timeout 10; //用于设置客户端请求读取超时时间

client_body_timeout 10; //用于设置客户端请求主体读取超时时间

send_timeout 10; //用于设置相应客户端的超时时间

//以下是httpGzip模块配置

#httpGzip modules

gzip on; //开启gzip压缩

gzip_min_length 1k; //设置允许压缩的页面最小字节数

gzip_buffers 4 16k; //申请4个单位为16K的内存作为压缩结果流缓存

gzip_http_version 1.1; //设置识别http协议的版本,默认是1.1

gzip_comp_level 2; //指定gzip压缩比,1-9 数字越小,压缩比越小,速度越快.

gzip_types text/plain application/x-javascript text/css application/xml; //指定压缩的类型

gzip_vary on; //让前端的缓存服务器存经过gzip压缩的页面

#nginx的server虚拟主机配置

#两种方式一种是直接在主配置文件中设置server字段配置虚拟主机,另外一种是使用include字段设置虚拟主机,这样可以减少主配置文件的复杂性。

#*****************************以下是server主机设置*********************************

server {

listen 80; //监听端口为80

server_name www.stu21.com; //设置主机域名

charset gb2312; //设置访问的语言编码

access_log logs/www.rsyslog.org.access.log main; //设置虚拟主机访问日志的存放路径及日志的格式为main

location / { //设置虚拟主机的基本信息

root sites/www; //设置虚拟主机的网站根目录

index index.html index.htm; //设置虚拟主机默认访问的网页

}

location /status { // 查看nginx当前的状态情况,需要模块 "--with-http_stub_status_module"支持

stub_status on;

access_log /usr/local/nginx/logs/status.log;

auth_basic "NginxStatus"; }

}

server {

listen 80;

server_name www.stu21.com;

location / {

root /nginx/htdocs;

index index.html index.htm;

}

}

}

注解:server段是在http段里的,而location段是在server段里的;

转载于:https://www.cnblogs.com/na2po2lun/p/4191156.html

一.Nginx的特性和一些知识点相关推荐

  1. 最新微服务、MySQL、Nginx加Redis实战,助你成功向阿里P8进军!

    前言 当下互联网时代,国际社会发展迅速,技术革新更加迅猛.未来智能时代,是一个数据时代,而如何处理好这些数据,就是科技发展的趋势. 本文主要为大家介绍一些2020年阿里P8对标学习教程,涵盖微服务架构 ...

  2. 进阶 Nginx 高手必须跨越的 5 座大山

    Nginx 很火,因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影.它天生就适合在 Linux 服务器上处理百万.千万级的并发连接,实现高吞吐量的 WEB 服务. 如果你想让自己的产品在 ...

  3. 给Java新手的一些建议——Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

  4. Linux的简单Nginx

    Nginx简介 Nginx其实就是另一种方式的web服务器 Nginx的特性 1.模块化设计,较好的扩展性 2.高可靠性.master/worker工作模型 3.支持热部署,不停机升级 4.低内存消耗 ...

  5. Nginx相关基础配置详解

    一.I/O类型及与其相关概念: 1.1同步和异步:synchronous, asynchronous  [关注的是消息通知机制] 同步:调用发出不会立即返回,但一旦返回就可以返回最终结果: 异步:调用 ...

  6. java编程中的点_Java的21个技术点和知识点归纳(转)

    1. JVM相关(包括了各个版本的特性) 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可.不过对于一个有着3年以上Java经验的资深开发者来说,不 ...

  7. nginx常用功能全揭秘

    本文旨在用最通俗的语言讲述最枯燥的基本知识 nginx作为一个高性能的web服务器,想必大家垂涎已久,蠢蠢欲动,想学习一番了吧,语法不多说,网上一大堆.下面博主就nginx的非常常用的几个功能做一些讲 ...

  8. Redis进阶实践之五Redis的高级特性

    一.引言 上一篇文章写了Redis的特征,使用场景,同时也介绍了Redis的基本数据类型,redis的数据类型是操作redis的基础,这个必须好好的掌握.今天我们开始介绍一些Redis的高级特性,虽然 ...

  9. nginx常用功能全揭秘(内附福利!!!)

    本文旨在用最通俗的语言讲述最枯燥的基本知识 nginx作为一个高性能的web服务器,想必大家垂涎已久,蠢蠢欲动,想学习一番了吧,语法不多说,网上一大堆.下面博主就nginx的非常常用的几个功能做一些讲 ...

最新文章

  1. c语言实参的默认存储类型,2016下半年软考程序员练习习题及答案解析(一)
  2. Android Tabhost with FragmentActivity
  3. 使用Nomad构建弹性基础架构: 容错和中断恢复
  4. 使用mysql制作学生成绩单_【实例讲解】快速制作学生成绩单
  5. [vue] vue给组件绑定自定义事件无效怎么解决?
  6. Win10系统鼠标滑轮灵敏度怎么设置
  7. 全站仪和手机连接软件_全站仪各方面应用的原理、操作及计算,看这篇就对了...
  8. 试用阿里开源的Arthas小记
  9. json文件转Excel
  10. 两款WiFi无线网络扫描工具软件 WirelessMon Xirrus WiFi Inspector
  11. SAP 订单结算方式
  12. 长城汽车召回上万辆欧拉IQ:电池存在安全隐患,曾因自燃被拉黑
  13. 会玩计算机游戏英语,英语口语表达:他整天就只会玩计算机游戏
  14. Java读取批量Excel文件
  15. 实现折叠的uitableviewcell效果
  16. 糗事百科李威: 如何基于数据构建推荐系统,助力精细化运营?
  17. 微信VS抖音_四大品类投放分析报告——护肤、彩妆、美食饮品、母婴用品
  18. input输入框禁用苹果系统键盘的return键
  19. NOIp初赛模拟题及标准答案(提高组)
  20. 【01 dp】A005_LC_生成数组(暴搜 / 记忆化 / dp)

热门文章

  1. sum 去重_总结leetcode上【排列问题】【组合问题】【子集问题】回溯算法去重的两种写法!...
  2. mybatis plus 动态创建表和字段_mybatis-plus maven代码生成器
  3. 华为双前置摄像头_vivo双摄像头为何前置?华为为何是后置?
  4. load data infile mysql_mysql Load Data InFile 的用法举例
  5. yolov3损失函数改进_YOLO V3 深度解析 (下)
  6. wordpress rest api 登录_Python构建RESTful网络服务[Django篇:生成API文档]
  7. 联想微型计算机怎么进入bios,详细教你联想电脑怎么进入bios
  8. java面向对象实现表达式计算,java面向对象课程设计-数学表达式计算器
  9. lambda函数 java_使用 Java 构建 Lambda 函数 - AWS Lambda
  10. asp连接mysql未发现数据源名称_asp.net – 连接到MySQL导致错误“未找到数据源名称且未指定默认驱动程序”...