Nginx快速入门

nginx.png

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

安装Nginx

这里我用CentOS为例:
1.安装先决条件

$ yum install yum-utils

2.设置yum存储库,将下面内容写入/etc/yum.repos.d/nginx.repo

$ vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

3.安装Nginx

$ yum update
$ yum install nginx

4.验证是否安装成功
启动Nginx

$ nginx
查看端口80已被nginx监听
$ netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      666/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      799/master          
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      23779/nginx: master 
tcp6       0      0 :::22                   :::*                    LISTEN      666/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      799/master

5.设置防火墙
如果在浏览器里输入ip地址发现无法访问此网站,那有可能是防火墙80端口没有开放。

编辑iptables配置文件
$ vim /etc/sysconfig/iptables
添加开放80端口
 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEP
重启iptables
$ systemctl restart iptables

们刷新页面出现Welcome to nginx!说明安装配置成功


welcone nginx.png

Nginx常用命令

$ nginx           — 启动Nginx
$ nginx -t        — 检查Nginx配置文件
$ nginx -s stop   — 快速关闭
$ nginx -s quit   — 正常关闭
$ nginx -s reload — 重新加载配置文件
$ nginx -s reopen — 重新打开日志文件

Nginx主模块

基本命令
daemon
语法: daemon on | off
缺省值:on
是否以守护进程的方式运行nginx,守护进程是指脱离终端并且在后台运行的进程,关闭守护进程可以方便我们调试nginx。

daemon off;

master_process
语法:master_process on | off
缺省值:on
是否以master/worker方式逬行工作,在实际的环境中nginx是以一个master逬程管理多个worker进程的方式运行的,
关闭后nginx就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求worker_processes number;默认1,在master/worker运行方式下worker进程的数目,一般情况下用户要配置与CPU内核数相等的worker进程。

master_process off;

生产环境中不要使用"daemon"和"master_process"指令,这些选项仅用于开发调试。

error_log
语法:error_log file [ debug | info | notice | warn | error | crit ]
缺省值:${prefix}/logs/error.log
Nginx 添加 --with-debug 编译参数, 你还能够使用以下配置:

error_log LOGFILE [ debug_core | debug_alloc | debug_mutex | debug_event
]: | debug_http | debug_imap ;

include
语法:include file | *
缺省值:none
你可以在任意地方使用include指令实现配置文件的包含,类似于apache中的include方法,可减少主配置文件。

include指令还支持像下面配置一样的全局包含的方法,例如包含一个目录下所有以".conf"结尾的文件:

include vhosts/*.conf;

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

pid /var/log/nginx.pid;

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

例如:

user www users;

worker_processes
语法:worker_processes number
缺省值:1
nginx可以使用多个worker进程,原因如下:

1.使用SMP
2.当工作程序在磁盘I / O上阻塞时减少延迟
3.当使用select()/ poll()时限制每个进程的连接数

worker_processes 4;

Nginx处理HTTP的核心功能模块

基本指令
alias
语法:alias file-path|directory-path;
缺省值:no
使用字段:location
该伪指令分配用于指定位置的路径。 请注意,它看起来类似于root伪指令,但是文档root不会改变,只是用于请求的文件系统路径。

location  /i/ {
 alias   /spool/w3/images/;
}
# 请求“ /i/1.jpg”将返回文件“ /spool/w3/images/1.jpg

keepalive_timeout
语法: keepalive_timeout [ time ]
缺省值:keepalive_timeout 75
使用字段:http, server, location
第一个参数为与客户端的保持活动连接分配超时。 在此时间之后,服务器将关闭连接。

可选的第二个参数指定了答应头Keep-Alive: timeout=time的```time````值,这个值可以使一些浏览器知道什么时候关闭连接,以便使服务器不用重复关闭,如果不指定这个参数,nginx不会在答应头中发送Keep-Alive信息。

下面列出了一些服务器如何处理包含Keep-Alive的答应头:

  • MSIE和Opera会忽略“ Keep-Alive:timeout = <N>”标头。
  • MSIE使连接保持活动状态约60-65秒,然后发送TCP RST。
  • Opera可以长时间保持连接状态。
  • Mozilla使连接保持活动状态N大约1-10秒。
  • Konqueror使连接保持活动状态约N秒钟。
    listen
    语法:listen address:port [ default [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ]
    缺省值:listen 80
    使用字段:server
    listen指令指定封闭服务器{...}块接受的地址和端口。 可以仅指定地址,仅端口或服务器名称作为地址。
listen 127.0.0.1:8000;
listen 127.0.0.1;
listen 8000;
listen *:8000;
listen localhost:8000;

IPv6地址(0.7.36)设置:

listen [::]:8000; 
listen [fe80::1];

location
语法:location [=|~|~*|^~] /uri/ { ... }
缺省值:no
使用字段:server
这个参数根据URL的不同需求来进行配置,可以使用字符串与正则表达式匹配,如果要使用正则表达式,你必须指定下列前缀:

  1. ~*不区分大小写
  2. ~区分大小写
location  = / {
  # 只匹配 / 的查询
  [ configuration A ] 
}
location  / {
  # 匹配任何以 / 开头的查询
  # 但是正则表达式与一些较长的字符串将首先匹配
  [ configuration B ] 
}
location ^~ /images/ {
  # 匹配任何以/images/开始的查询并且停止搜索,不检查正则表达式
  [ configuration C ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配任何以gif,jpg,jpeg结尾的文件,但是所有/images/目录请求将在Configuration C 中处理
  [ configuration D ] 
}

resolver_timeout
语法:resolver_timeout time
使用字段:http,server,location
解析超时时间。如:

resolver_timeout 5s;

root
语法:root path
缺省值:root html
使用字段:http,server,location,location中if字段
请求到达后的文件根目录

location  /i/  {
  root  /spool/w3
}

如果亲求/i/top.jpg文件,nginx将转到/spool/w3/i/top.jpg文件。你可以在参数中使用变量。
注意:在亲求中root会添加这个location到它的后面,即/i/top.jpg并不会请求/spool/w3/i/top.jpg文件,如果要实现上述类似与apache alias的功能,可以使用alias指令。
server
语法:server{...}
缺省值:no
使用字段:http
server字段包含虚拟主机的配置。
没有明确的机制来分开基于域名(请求中的主机头)和基于IP的虚拟主机。
可以通过listen指令来指定必须连接到这个server块的所有地址和端口,并且在server_name指令中可以指定所有的域名。
server_name
语法:server_name name [...]
使用字段:server
将HTTP请求的主机头与nginx配置文件中的server字段中指定的参数进行匹配,并且找出第一个匹配结果。

  1. 完整的静态名称
  2. 名称开头带有通配符的名称— * .example.com
  3. 名称末尾带有通配符的名称www.example.*
  4. 具有正则表达式的名称

如果不匹配,将根据以下顺序使用配置文件中的[#server服务器{...}]块:

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