nginx使用说明(二)新手指南

本节介绍如何启动和停止nginx,重新加载配置,配置文件的结构,如何配置nginx分配静态内容,如何配置nginx为代理服务器,如何与FastCGI程序相联。

Nginx包含一个主进程和多个工作进程。主进程读取并处理配置,维护工作进程。工作进程负责实际的请求处理。Nginx使用事件驱动和操作系统相关的机制,可以有效的在工作进程间分配请求。工作进程的数量可以在配置文件里设定,可以配置为固定的个数,也可以根据CPU的核心数进行动态适应。

默认情况下,配置文件为nginx.conf,一般路径为/usr/local/nginx/conf/etc/nginx, 或/usr/local/etc/nginx。像上一节我们设置的安装路径,配置文件放在/usr/local/nginx/conf。

启动,停止nginx,更新配置

运行可执行文件启动nginx,如

[[email protected] nginx]# /usr/local/nginx/sbin/nginx

启动后,可以用如下命令操作nginx

nginx -s signal

signal可以是如下命令

stop:快速停止

quit:安全退出

reload:重新加载配置文件

reopen:打开日志文件

如果要等nginx工作进程处理完当前的所有请求后才停止,应该使用如下命令:

nginx –s quit

配置文件修改后,需要重新加载或重启nginx才会起作用,重新加载配置执行如下命令:

nginx –s reload

主进程接收到重新加载配置的命令后,先检查新配置的语法是否有效,并尝试应用新的配置。如果新配置应用成功,主进程启动新的工作进程,并发送消息通知旧的进程停止工作。如果新配置应用失败,则回滚所有更改,并继续使用旧的配置,旧的进程放弃新的配置,继续使用旧的进程处理当前请求。

也可以通过Unix的命令工具直接发送信号给nginx的进程ID,如kill命令。Nginx的主进程ID默认配置在/usr/local/nginx/logs或/var/run目录下的nginx.pid文件中。假设主进程ID是1628,要使用QUIT命令让nginx安全退出,执行如下命令:

kill –s quit 1628

使用ps命令获取nginx所有运行的进行

ps -ax | grep nginx

配置文件结构

nginx的各模块由配置文件中的指令集控制。指令集分为简单指令和块指令,简单指令由名称和参数组成,中间以空格分格,以分号(;)结束,块指令的结构和简单指令相同,但以大括号包围的附加指令集结束。块指令的大括号里可以包含其它指令,称作上下文(例如:events,http,server和location)。

放置在所有上下文以外的指令都被认为是在主上下文中。主上下文包含events和http指令,http包含server,server包含location。

注释每行使用#开头。

静态文件

Web服务器的一个重要作用就是分配静态文件(如图片和html文件)。可以实现一个示例,根据请求从不同的目录分配文件:/data/www和/data/images。修改配置文件,在http块中设置一个server块,在server块包含两个locaton块。

首先,创建/data/www目录,添加html.index文件,内容自己定义,再创建/data/images目录,放几张图片。

接着打开配置文件,默认已经包含一些已注释的示例。先不管注释的内容,新添加一个server块,

http{

server{

}

}

配置文件可以包含多个server块,通过监听端口(listen)和服务名称(server_name)区分,通过请求消息头中的URI匹配server中loation的参数来确定哪个server块处理请求。

在server块中添加如下指令:

location /{

root /data/www

}

location块定义”/”前缀与请求的URI作比较,匹配的请求URI会被添加到root指令定义的路径之后,也就是/data/www,组成请求文件的本地路径。如果有多个location块匹配,nginx选择其中前缀最长的一个。上边的locatoin块使用了长度最短的前缀,所以如果其它location无法匹配,都会使用这个location块。

添加第二个location块:

location /images/{

root /data;

}

匹配以/images/开头的所有请求。

配置文件server的最终内容如下:

server{

location /{

root /data/www;

}

location /images/{

root /data;

}

}

配置监听80端口,并且可以通过http://localhost/访问。URIs以/images/开头的请求,服务器从/data/images发送文件,例如对应请求http://localhost/images/example.png,nginx会发送文件/data/images/example.png,如果文件不存在,nginx发送一个404的响应异常。不以/images/开头的请求会映射到/data/www目录。例如请求http://localhost/some/example.html会发送文件/data/www/some/example.html

重启nginx或发送reload命令以使新配置生效:

nginx –s reload

如果出现异常,可以在access.log和error.log中查找原因,它的目录是/usr/local/nginx/logs或/var/logs/nginx

配置简单的代理服务

Nginx经常用作代理服务器。代理服务器接收请求,把它们传递到被代理服务器,获取响应,并返回到客户端。

我们将要配置一个代理服务器,从本地目录处理图片文件的请求,其它请求发送到被代理服务器处理。在本例中,两个服务器都被定义在同一个nginx实例中。

首先,定义被代理服务器,在配置文件中再添加一个server块,内容如下:

server{

listen 8080;

root /data/up1;

location /{

}

}

这个服务配置监听80端口,映射所有请求到/data/up1目录。这里的root指令放在server上下文中,当location指令中没有root指令时,可以像这样配置root指令。

然后,修改上一节的配置为代理服务器的配置。在第一个location块配置代理服务器的协议,名称,端口设置proxy_pass的参数值:

server{

location /{

proxy_pass http://localhost:8080;

}

location /images/{

root /data;

}

}

修改第二个location块,让它只匹配特定扩展名的图片。

location ~\.(gif|jpg|png)${

root /data/images;

}

参数是一个正则表达式,匹配所有以.gif,.jpg或.png结尾的URIs,正则表达式必须以~开始,与该配置匹配的请求会被映射到/data/images目录。

nginx处理请求时,首先检查location指令定义的最长前缀,与正则表达式比较,如果匹配,nginx使用这个location,否则使用其它指令定义。

代理服务器的最终配置如下:

server{

location /{

proxy_pass http://localhost:8080//;

}

location ~\.(gif|jpg|png)${

root /data/images;

}

}

服务器会过滤以.gif,.jpg或.png结尾的请求,把它们映射到/data/images目录,传递其它请求到代理服务器。

设置FastCGI代理

Nginx可以将请求路由到各种框架和语言开发的FastCGI应用服务器,如PHP。

最基本的,将proxy_pass指令改为fastcgi_pass指令,用fastcgi_param设置传到FastCGI服务器的参数。假设FastCGI服务器的访问地址是localhost:9000,用上一节的代理服务器的配置,把proxy_pass改为fastcgi_pass,更新参数值为localhost:9000。在PHP中,SCRIPT_FILENAME参数用来过确定脚本名称,QUERY_STRING用来传递请求参数,最终配置文件如下:

server{

location /{

fastcgi_pass localhost:9000;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param QUERY_STRING $query_string;

}

location ~\.(gif|jpg|png)$   {

root /data/images;

}

}

通过该配置,除了静态文件,所有请求都通过FastCGI协议被路由到代理服务器上localhost:9000。

时间: 2024-10-14 12:04:13

nginx使用说明(二)新手指南的相关文章

Nginx系列二 slab分配器

nginx的slab分配器主要和共享内存(nginx自己实现的共享内存 采用mmap或者shm实现)一起使用,Nginx在解析完配置文件,把即将使用的共享内存全部以list链表的形式,对共享内存进行管理和划分.在nginx_cycle.c中 static ngx_int_t ngx_init_zone_pool(ngx_cycle_t *cycle, ngx_shm_zone_t *zn) { u_char *file; ngx_slab_pool_t *sp; sp = (ngx_slab_p

Nginx之二:负载均衡及高可用

一.Nginx负载均衡及高可用简介 负载均衡是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务.负载均衡,将用户的所有HTTP请求均衡的分配到每一台机器上,充分发挥所有机器的性能,提高服务的质量和用户体验.负载均衡常用的Web服务器软件有Nginx.HAProxy.LVS.Apache. Nginx负载均衡是通过upstream模块来实现的,常见四种负载策略: 轮循(默认:将每个请求均匀分配到每台服务器 最少连接:将请求分配给连接数最少的服务器 IP

高性能web服务器nginx(二)之常用功能举例

一.配置使用nginx 1.提供测试页 [[email protected] ~]# mkdir /www/a.com/htdoc [[email protected] ~]# cat /www/a.com/htdoc/index.html  <h1>www.a.com</h1> [[email protected] ~]# chown -R nginx.nginx /www/a.com/htdoc/ 2.备份配置文件并简要更改配置文件 [[email protected] ~]#

The server of Nginx(二)——Nginx访问控制和虚拟主机

一.Nginx访问控制 (1)基于授权的访问控制 Nginx于Apache一样,可以实现基于用户授权的访问控制,当客户端要访问相应网站或者目录时要求输入用户名密码才能正常访问,配置步骤与Apache基本一致 第一步:生成用户密码认证文件,使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与之前讲解Apache认证时一样 ~]#htpasswd -c /usr/local/nginx/passwd.db test #回车后会让输入两次密码 修改

Nginx——安装Nginx(二)

安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库.

Nginx(二):Nginx基本安装

基于Windows安装 基于Linux安装 环境准备 CentOS7 Nginx1.9 gcc gcc-c++ PCRE库 OpenSSL库 zlib库 基本安装 1.安装gcc gcc-c++ 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境 $ yum install -y gcc gcc-c++ 2.安装wget(如未安装,请先安装) $ yum -y install wget 3.安装PCRE库 PCRE(Perl Compatible Regular Expre

Nginx 之二:初级配置及优化

一:常用功能优化: 1.1:网络连接的优化: 只能在events模块设置,放置在一个时刻只有一个请求,而出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的nginx会影响以部分性能. accept_mutex on; 1.2:设置是否允许同时接受多个网络连接: 只能在events模块设置,Nginx服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个,配

Nginx学习(二)基础知识

Nginx的内核模块 Nginx的内接模块用于控制Nginx服务器的基本功能 配置实例: user nobody nobody; worker_processes 4; error_log logs/error.log crit; pid logs/nginx.pid; worker_rlimit_nofile 65535; 指令名称:error_log 指令名称:pid Nginx的事件模块 事件模块(EventModules)用于控制Nginx如何处理连接.该模块的指令即指令的一些参数会对应

Nginx配置文件(二)

Nginx的所有配置文件都在 /etc/nginx  目录下面nginx.conf 主要有main配置段 ,也叫核心配置段,主配置段 还有http和mail 配置指令以分号结尾(;)而且语法区分大小写 eg: directive value1 [value2 ...]; 而且还支持使用变量 模块内置变量 :变量自动赋值 自定义变量:set var_name value 主配置段的指令的类别: 用于调试,定位问题(生产中不用开启) 正常运行,必备的配置 优化性能的配置 事件相关的配置(一个事件响应