2018-03-13 Nginx从入门到实践-基础篇

一.学习环境:系统硬件:CPU > =2Core,内存 >=256M

操作系统:版本>=7.0,位数 X64

二.环境调试确认

1,确认系统网络

2,确认yum可用

yum list | grep gcc

两项安装

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

yum -y install wget httpd-tools vim

一次初始化

cd /opt;mkdir app download logs work backup

3,确认关闭iptables规则

service firewalld stop

ps -ef | grep firewall

4,确认停用seinux




Nginx的中间件架构


Nginx的中间件架构  

     一.Nginx的简述:Nginx是一个开源且高性能,可靠的Http中间件,代理服务.

     二.常见的Http服务:httpd-Apache基金会,IIS-微软,GWS-Google

     三.问:为什么选择Nginx? 

    原因一,IO多路复用epoll多个描述符的I/O操作        都能在一个线程内并发      交替地顺序完成,这就叫I/O多路复用,这里的附庸指的是复用同一个线程.什       么是epoll IO多路复用实现方式select,poll,epoll



IO多路复用epoll

select缺点:1.能够监视文件描述符的数量存在最大限制

                   2.线形扫描效率低下

epoll模型:1.每当FD就绪,采用系统的回调函数之间将fd放入,效率更高.

                 2.最大连接无限制

原因二,轻量级 功能模块少 代码模块化

原因三,CPU亲和(affinity)一,为什么需要CPU亲和



Cpu亲和(affinity)

什么是Cpu亲和:是一种把Cpu亲和和Nginx工作进程绑定方式,把每个worker进程固定在一个cpu上执行,减少切换cpu的cache miss,获得更好的性能.

原因四,sendfile



Sendfile


Sendfile

一,Nginx快速搭建与基本参数使用

Mainline version - 开发版   Stable version - 稳定版本 Legacy version - 历史版本

二,基本参数使用

安装目录 编译参数 nginx基本配置语法

1,安装目录讲解

cd /etc/yum.repos.d/

vim nginx.repo

yum -y install nginx

nginx -V

yum list | grep nginx

命令: rpm -ql nginx

/etc/logrotate.d/nginx 配置文件

/etc/nginx 目录

/etc/nginx/nginx.conf 配置文件

/etc/nginx/conf.d  目录

/etc/nginx/conf.d/default.conf 默认配置目录

/etc/nginx/fastcgi_params fastcgi配置文件

/etc/nginx/uwsgi_params uwsgi配置文件

/etc/nginx/scgi_params scgi配置文件

/etc/nginx/koi-utf 编码转换影射转化

/etc/nginx/koi-win 编码转换影射转化

/etc/nginx/win-utf  编码转换影射转化

/etc/nginx/mime.types 设置http协议的Content-Type与扩展名对应关系

/usr/lib/sysemd/system/nginx-debug.service 

/usr/lib/sysemd/system/nginx.service

/etc/sysconfig/nginx

/etc/sysconfig/nginx

用于配置出系统守护进程管理器管理方式

/usr/lib64/nginx/modules

/etc/nginx/modules

Nginx模块目录

/usr/sbin/nginx

/usr/sbin/nginx-debug

Nginx服务的启动管理的终端命令

/usr/share/doc/nginx-1.12.0

/usr/share/doc/nginx-1.12.0/COPYRIGHT 

/usr/share/man/man8/nginx.8.gz 

Nginx的手册和帮助文件

/var/cache/nginx

Nginx的缓存目录

/var/log/nginx

Nginx的日志目录

2,安装编译参数

命令:nginx-V

--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock

安装目的的目录或路径

--http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp

执行模块时,Nginx所保留的临时性文件

--user=nginx --group=nginx 设定Nginx进程启动的用户和组的用户

--with-cc-opt=parameters 设置额外的参数被添加到CFLAGS变量

--with-ld-opt=parameters 设置附加的参数,链接系统库 

Http请求


Http请求

request - 包括请求行,请求头部,请求数据

> GET / HTTP/1.1

> User-Agent: curl/7.29.0

> Host: www.imooc.com

> Accept: */*

response - 包括状态行,消息报头,响应正文

curl -v http://www.imooc.com >/del/null 类似于浏览器查看web请求

2,Nginx日志类型

包括:error.log access_log

log_format

Syntax:log_format name [escape=default|json]string...;

Default:log_format combined "...",

Context:http

2.Nginx的变量

Http请求变量 -arg_PARAMRTER,Http_HEADER,sent_http_HEADER

内置变量 - Nginx内置的

自定义变量 - 自己定义

Nginx模块讲解

Nginx官方模块

第三方模块

--with-http_stub_status_module Nginx的客户端状态

--with-http_stub_status_module配置

Syntax:stub_status;

Default:--

Context:server,location

四,默认模块讲解

--with-http_random_index_module 目录中选择一个随机主页

2,rangdom_index_module

syntax:random_index on | off;

Default:random_index off;

Context:location

--with-http_sub_module HTTP内容替换

Syntax : sub_filter string replacement;

Default:--

Context:http,server,location

2.http_sub_module

Syntax: sub_filter_last_modified on|off;

Default:sub_filter_last_modifiied off;

Context:http,server,location

2.http_sub_module

Syntax: sub_filter_once on|off;

Default:sub_filter_once on;

Context:http,server,location

八,Nginx的请求限制

连接频率限制 - limit_conn_module

请求频率限制- limit_req_module




Http协议的连接与请求

Http 1.0 Tcp不能服用

Http 1.1顺序性Tcp复用

Http2.0多路复用Tcp服用

八,Http协议的连接与请求

Http请求建立在一次Tcp连接基础上

一次Tcp请求至少产生一次Http请求

连接限制

syntax:limit_conn_zone key zone=name:size;

Default:--

context:http

Syntax:limint_conn zone number;

Default:--

Context:http,server,location

八 请求限制

Syntax:limit_req_zone key zone = name:size rate=rate;

Default:--

Context:http

Syntax:limit_req zone=name[burst=number][nodelay];

Default:--

Context:http,server,location

九Nginx的访问控制

基于IP的访问控制 http_access_module

Syntax:allow address | CIDR |unix:|all;

Default:--

Context:http,server,location,limit_except

Syntax:deny address | CIDR |unix:|all;

Default:--

Context:http,server,location,limit_except

基于用户的信任登陆-http_auth_basic_module

http_access_module局限性


http_access_module局限性  只能通过$remote_addr控制信任


3.http_x_forwarded_for

http_x_forwarded_for=Client IP,Proxy(1)IP,Proxy(2)IP,....

方法一,采用别的Http头信息控制访问,如:Http_X_Forward_For

方法二,结合geo模块作

方法三,通过http自定义变量传递

http_auth_basic_module

Syntax:auth_basic strint | off;

Default:auth_basic off;

Context:http,server,location,limit_except

Syntax:auth_basic_user_file file;

Default:----

Context:http,server,location,limit_except

http_auth_basic_module局限性

一,用户信息以来文件方式

二,操作管理机械,效率低下

3,解决方案

一,Nginx结合Lua实现高效验证

二,Nginx和LDAP打通,利用nginx-auth-ldap

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 1.yum -y install gcc gcc-c++ autoconf pcre pcre-devel mak...
    銭兎孑阅读 781评论 0 3
  • 1.简介:  Nginx:engine X ,2002年,开源,商业版 http协议:web服务器(类似于ht...
    尛尛大尹阅读 1,858评论 0 3
  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 8,524评论 1 41
  • 1.ngnix介绍 ngnix www服务软件 俄罗斯人开发 开源 性能很高 本身是一款静态WWW软件 静态小文件...
    逗比punk阅读 2,075评论 1 6
  • 《老男孩Linux运维》笔记 隐藏Nginx软件版本号 一般来说,软件的漏洞都和版本有关。因此要尽量隐藏对访问用户...
    Zhang21阅读 3,623评论 0 28