nginx学习(一)nginx安装

很早就听说nginx性能高,并且并发能力强,是能够和Apache竞争的服务器,而且代码时开源的,所以很想学习一下,可是一直没有时间,

刚好这段比较空闲,就来学习一下。

很多关于nginx的资料都是基于linux平台的,所以就在win7下安装了图形界面的Ubuntu,可是用惯了windowx安装软件就点一下那个exe,

悲催的linux下没有exe的软件,做什么事情都是在黑框框中写命令,这对于没用学过linux命令的人来说真是一件难事。

nginx的安装

首先下载nginx的安装包,因为我买了《nginx深入详解(陶辉)》这本书,他是基于1.014版本的,所以我就下载了1.015版本,下载

之后解压:

tar -zxf  nginx安装包的路径,比如我放在桌面上tmp文件夹:/home/smtl/桌面/tmp/nginx-1.0.15.tar.gz

tar
-zxf 
/home/smtl/桌面/tmp/nginx-1.0.15.tar.gz

然后下载nginx依赖的三个库zlib-1.2.8 OpenSSLpcre

用tar命令解压(我的这三个安装包也都放在/home/smtl/桌面/tmp)

然后在cd  /home/smtl/桌面/tmp/nginx-1.0.15

进入解压后的nginx文件,然后用下面的命令安装:

./configure --prefix=/home/smtl/桌面/textNx
--with-http_ssl_module --with-pcre=/home/smtl/桌面/tmp/pcre-8.34 --with-zlib=/home/smtl/桌面/tmp/zlib-1.2.8 --with-openssl=/home/smtl/桌面/tmp/openssl-1.0.1c
make
make install

--prefinx=/home/smtl/桌面/textNx :  nginx安装目录,如果不加这句的默认路径就是:/usr/local/nginx

--with-http_ssl_module: 安装ssl模块

--with-pcre=/home/smtl/桌面/tmp/pcre-8.34 : pcre文件路径

--with-zlib=/home/smtl/桌面/tmp/zlib-1.2.8 : zlib文件路径

--with-openssl=/home/smtl/桌面/tmp/openssl-1.0.1c: openssl文件路径

启动nginx

确保系统的
80 端口没被其他程序占用:netstat -ano|grep

sudo /home/smtl/桌面/textNx/nginx

打开浏览器输入127.0.0.1,如果浏览器出现
Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

常用的配置

配置例子

usr nobody

worker_processes 2;

error_log  /var/log/nginx/error.log error;

#pid  logs/nginx.pid

events {

use epoll;

worker_connections 50000;

}

http {

include         mime.types;

default_type    application/octet-stream;

log_format   main  ‘$remote_addr [$time_local] "$request"‘

‘$status $bytes_event "$http_referer"‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

access_log  logs/access.log  main buffer=32k;

}

2.3.1调试进程和定位问题的配置项

1)是否以守护进程方式运行Nginx

语法: daemon on|off;

默认: daemon on;

守护进程是在后台运行的进程。它脱离终端是为了避免进程执行过程中的信息在任何终端上显示,这样一来,进程就不会被任何终端所产生的信息打断。

2)是否以master/worker方式工作

语法:master_process on|off

默认: master_process on;

如果master_process off就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求的。

3)error日志的设置

语法: error_log /path/file level;

默认: error_log logs/error/log error;

error日志使定位Nginx问题的最佳工具,我们可以根据自己的需求来设置error日志的路径和级别。

/path/file 的取值:

默认logs/error.log,

/dev/null 这样就不会输出任何日志

还可以使stderr 这样日志会输出到标准错误文件中。

error日志的级别:debug、info、notices、warn、error、crit、alert、emerg,从左到右级别依次增大。

4) 是否处理几个特殊的调试点

语法:debug_points [stop|abort]

debug会在调试点处stop,

abort会在调试点处产生一个coredump文件

5)仅对指定的客户端输出debug级别的日志

语法:debug_connection[IP|CIDR]

这个配置项实际上属于事件类配置,它必须放在events中才有效,例如:

events {

debug_connection 10.224.66.14;

debug_connection 10.224.47.0/24;

}

6)限制coredump核心存储文件的大小

语法:worker_rlimit_core size;

7)指定coredump文件生成目录

语法:working_directory path;

worker进程的工作目录。这个配置的唯一用途就是设置coredump文件所在的目录,协助定位问题。因此,需确保worker进程有权限写入文件。

2.3.2 正常运行的配置项

1)定义环境变量

语法:env VAR|VAR=VALUE

这个配置可以让用户直接设置系统上的环境变量。env TESTPATH=/tmp/;

2)嵌入其他配置文件

语法:include/path/file;

3) pid文件路径

语法:pid path/file;

默认:pid logs/nginx.pid;

4)Nginx worker进程运行的用户及用户组

语法:user username [groupname]

默认:user noday noday

注意用户名与组名相同

5)指定Nginx worker进程可以打开的最大句柄描述符的个数

语法:work_rlimit_nofile limit;

6)限制每个用户发往Nginx的信号队列的大小。

语法:worker_rlimit_sigpending limit;

2.3.3优化性能的配置项

1)Nginx worker进程的个数

语法: worker_processes number;

默认: worker_processes 1;

2) 绑定worker进程到指定的CPU,避免多个worker抢占同一个CPU内核

语法:worker_cpu_affinity cpumask [cpumask]

例如:

worker_processes 4

worker_cpu_affinity 1000 0100 0010 0001

3)SSL硬件加速

语法:ssl_engine device

Openssl 提供的命令查看SSL硬件加速设备:

openssl engine -t

4)系统条用gettimeofday的执行斌率

语法:timer_resolution t

5)Nginx 进程优先级设置

语法:worker_priority nice

默认:worker_priority 0

2.3.4事件类配置项

1)是否打开accept锁

语法:accept_mutex [on|off]

默认:accept_mutex on;

实现所有worker进程处理的客户端请求数尽量接近。

2)使用accept锁后真正建立链接之间的延迟时间

语法:accept_mutex_delay Nms;

默认:accept_mutex_dalay 500ms;

3) lock文件的路径

语法:lock_file path/file

默认:lock_file logs/nginx.lock;

4) 批量建立新链接

语法: multi_accept [on|off]

默认: multi_accept off

5) 选择事件模型

语法:use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport]

默认:Nginx会自动使用最合适的事件模型。

6)每个worker的最大的连接数

语法: worker_connections number;

静态web服务器

2.4.1虚拟主机与请求的分发

1)监听端口

语法:listen address:port [default_server| [backlog=num|revbuf=size|sndbuf=size | accept_filter=filter|deferred|bind|inv6only=[on|off]|ssl] ]

默认:listen 80;

配置块: server

listen 127.0.0.1:8000;

listen 8000;

listen *:8000;

listen localhost:8000

2)主机名称

语法:server_name name [...];

默认:server_name "";

配置块: server

server_name后可以跟多个主机名称,如:

server_name www.testweb.com download.testweb.com;

3)server_names_hash_bucket_size

语法:server_names_hash_bucket_size size

默认:server_names_hash_bucket_size 32|64|128;

配置块:http、server、location

4)server_names_hash_max_size

语法:server_names_hash_max_size size

默认:server_names_hash_max_size 512;

配置块:http、server、location

5)重定向主机名称的处理

语法:server_names_in_redirect on|off;

默认:server_names_in_redirect on;

配置块:http、server、location

该配置需要配合server_name使用。在on打开使,表示重定向请求时回使用server_name里配置的第一个主机名代替原先请求中的Host头部;而使用off关闭时,表示在重定向请求时,会使用请求本身的Host头部。

6)location

语法:location[=|~|~*|@]/urI/{...}

配置块:server

A = 表示把URI作为字符串,以便与参数中的uri做完全匹配。例如:

location = / {

#只有当用户请求是/时,才会使用该location下的配置

}

B ~ 表示匹配URI时字母大小写敏感的

C ~* 表示匹配URI时忽略字母大小写问题

D ^~ 表示匹配URI时只需要其前半部分与URI参数匹配。例如:

location ^~/images/{

#以/image/开始的请求都会匹配上

}

E @ 表示仅用于Nginx服务内部请求之间的重定向问题,带有@的location不直接处理用户的请求。

F 当然,在uri参数中是可以用正则表达式的,例如:

locatioin ~* \.(gif|jpg|jpeg)$ {

#匹配以gif、jpg、jpeg结尾的请求

}

G 如果相处里不匹配所有的请求时则。。。就用“/”这个location处理。例如:

locatioin / {

# / 可以匹配所有的请求

}

时间: 2024-10-13 19:17:10

nginx学习(一)nginx安装的相关文章

Nginx学习指南之安装与配置

一.简介 Nginx [engine x]是Igor Sysoev编写的一个HTTP和反向代理服务器,另外它可以作为邮件代理服务器.Nginx已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括Yandex,Mail.Ru.VKontakte,以及Rambler,在国内使用Nginx作为Web Server,Cache Server,Proxy Server网站包括百度,新浪,腾讯,网易,机锋网等,根据Netcraft统计,在2012年8月份,世界上最繁忙的网站中有11.48使用Ngin

nginx学习(一):安装nginx

学习下nginx,本篇文章主要讲解下在linux下安装nginx 下载nginx 安装包 1.去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本: 2.上传tar包到linux 安装ngix依赖 在线yum安装 1.安装gcc环境 yum install gcc-c++ 2.安装PCRE库,用于解析正则表达式 yum install -y pcre pcre-devel 3.zlib压缩和解压缩依赖, yum install -y zlib zlib-devel 4

nginx学习与配置-安装与启动关闭管理

nginx服务器的安装 安装准备: nginx依赖于pcre库,要先安装pcre yum install pcre pcre-devel cd /usr/local/src/ wget wget http://nginx.org/download/nginx-1.6.3.tar.gz tar zxvf nginx-1.6.3.tar.gz cd nginx-1.6.3 ./configure --prefix=/data/local/nginx make && make install 这

nginx学习十一 nginx启动流程

今天用了一天的时间看nginx的启动流程,流程还是很复杂,主要的函数调用有十几个之多,通过看源码和上网查资料,弄懂了一些函数,有些函数还在学习中,有些函数还待日后学习,这里记录一下今天所学.加油! http://blog.csdn.net/xiaoliangsky/article/details/39856803 1nginx.c 启动的程序主要在src/core/nginx.c中,和普通函数一样,main函数是其入口函数:下面我们看看main函数的源代码: int ngx_cdecl main

nginx学习三 nginx配置项解析详解及代码实现

nginx配置项解析详解及代码实现 0回顾 在上一节,用nginx简单实现了一个hello world程序:当我们在浏览器中输入lochost/hello ,浏览器就返回:hello world.为什么会这样呢,简单一点说就是当我们请求访问hello这个服务,nginx就会看配置文件中是否有,如果有,根据具体的handler处理后把处理的结果返回给用户,没有就返回not found. location /hello { test_hello ;//无参数的配置 这其实是一个简单的配置.这节我们来

【nginx学习】nginx反向代理前端跨域问题

* 跨域简介: 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源. 注意:跨域限制访问,其实是浏览器的限制. 跨域类型: URL 说明 是否跨域 http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 是 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域

nginx学习(一):基本安装

转载自http://summervast.blog.51cto.com/690507/385511 注意:可能因版本不同,个别指令不起作用,需要注意版本灵活安装,我在安装时也遇到过此问题 开始学习nginx,初步安装nginx,先熟悉一下:参考网上的资料和涨宴老师书籍. http://nginx.org/en/download.html 下载需要的版本,0.7版本的是稳定版本,0.8的是开发版本,看个人所好,我用的是nginx-0.8.48: 一.安装 1.检查安装nginx的依赖性,nginx

Nginx基础学习(一)—Nginx的安装

一.Nginx介绍 1.什么是Nginx?      Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu.内存等资源消耗却非常低,运行非常稳定.   2.Nginx的应用场景 (1)HTTP服务器      Nginx是一个http服务可以独立提供http服务.可以做网页静态服务器.   (2)虚拟主机      可以实现在一台服务器虚拟出多个网

【saltstack学习笔记之十】使用sls安装nginx并管理nginx的配置文件

1.需求 使用sls安装nginx并管理nginx的配置文件,当nginx配置文件被修改时,自动更新配置文件,并重启nginx. 2.配置 1.在master端上写好nginx.sls文件 mkdir -p /srv/salt/nginx cd /srv/salt/nginx vim init.sls nginx: pkg: - installed service: - running - enable: True - reload: True - watch: - pkg: nginx - f