Nginx学习笔记(二)——搭建Web服务器

背景介绍

Nginx自诞生起就采用了2.6以后内核所支持的epoll模型进而使得处理效率大幅提升而受到了广大用户的青睐,但就Web服务来讲,Nginx所拥有的功能Apache都可以实现,但反过来确不行,这就是大多数场景时使用Nginx作为反向代理而不能取代Apache的原因。本文以Nginx_1.12.1版本为例,介绍Nginx充当Web服务器时的配置及用法。

软件安装

尽管Nginx已经被收录进epel源,但仍然推荐使用编译的方式进行安装,这样更为灵活。安装步骤为:

1.从Nginx官网下载1.12.1源码包并解压到/usr/local/src目录

# tar -xf nginx-1.12.1.tar.gz -C /usr/local/src/

2.创建用于运行worker进程的用户。Nginx采用Master+Worker方式进行工作,只能有1个Master进程;Worker进程可以有多个,Master用于给worker传递参数与指令,worker负责处理客户请求,这种方式的优点是1个worker出现问题不会影响到Master。

# useradd -M -r -s /sbin/nologin nginx

3.根据需求选择要启用的功能编译安装。注意:Nginx可以自定义日志级别,但如果要启用debug级别的日志,在编译时必须开启--with-debug选项,否则就算设置为debug级别也不生效,另外如果需要编译第三方模块,需要使用--add-module选项。

# cd /usr/local/src/

# ./configure --prefix=/usr/local/nginx/ --user=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_stub_status_module --with-pcre --add-module=/root/echo-nginx-module-0.60

# make && make install

Nginx主配置文件

Nginx的配置文件是nginx.conf文件,从结构上分为全局配置段和局部配置段,为了便于管理,建议的做法是将主配置段和局部配置段分成2个文件,主配置段优化性能和配置相关事件,局部配置段配置服务相关的内容,在主配置段使用include指令引用局部配置段。

上图中worker_processes是启动worker进程的数量,推荐的值是vcpu数量减1个;worker_connections是一个worker进程可以维持的连接数量默认为1024,整个Nginx服务器的连接数量=worker数量*每个worker的连接数;worker_priority是设置进程的nice值,linux系统中所有进程通过nice值来确定优先级,nice范围在-20到19之间,值越小优先级越高,默认所有进程的nice值都为0;worker_rlimit_noffile是一个worker进程最大允许打开的文件数,每一个套接字都需要对应一个socket文件,默认为1024。此处将局部配置段单独存放在server.conf文件中,通过include指令引用该配置文件。

局部配置段

1.server段定义

server段类似于Apache中的virtualhost段,一个http段中可以有多个server段侦听在不同的套接字上,listen为侦听的端口,如果希望侦听在其他套接字上可以在listen后面通过IP:Port的方式设置;server_name设置服务的主机名,主机名可以有多个,并且支持通配符和正则表达式(~),优先顺序为:

(1)先做精确匹配:www.contoso.com;

(2)左侧通配符匹配:*.contoso.com;

(3)右侧通配符匹配:www.contoso.*;

(4)正则表达式:~^.*\.contoso\.com$;

如果主机名不能陪上述任意匹配到,默认匹配第一个server,除非的别设定哪一个server是default_server。

2.location段定义

Nginx中location段的定义非常灵活,location表示请求资源的位置,后面可以跟目录或者是文件,而location在文件系统上的绝对路径还要取决于root或alias的设置。类似于server_name,location也有多种匹配方式,用法为:location [=|^~|~|~*] /uri,优先顺序为:

(1)=,精确匹配;

(2)^~,前半部分匹配;

(3)~,区分大小写匹配;

(4)~*,不区分大小写匹配;

如果主机名不能陪上述任意匹配到,默认匹配第一个location。

3.root值设置

root类似于Apache中的DocumentRoot,root可以设置在http段、server段和location段,作用范围越小,优先级越高,不设置默认继承上一级设置,root相当于路径的起始位置,后面的值可以相对路径或绝对路径,如果是相对路径,他相对的是Nginx的安装路径而言,location在文件系统上的位置实际为:root/location,以上图为例,根目录(/)所在的位置为/usr/local/nginx/html,50x.html文件所在位置为/usr/local/nginx/html/50x.html。

4.alias值设置

除了使用root表示路径的起始位置,还可以使用alias进行路径别名设置

与root表示启示位置不同,alias相当于路径的别名,结合上图,location中alias目录所在的为/var/www/alias,而/alias目录本身可以在文件系统上不存在。

5.状态监测

Nginx提供了一个状态监测的模块,编译时使用--with-http_stub_status_module选项进行开启,并在配置文件中进行设置设置

通过浏览器可以查看监测数据,Active connections表示当前所有打开状态的连接数;accept表示处理的连接数,handle成功创建的握手数,每个连接可以包含多个请求,requests表示处理的请求数。reading表示读取到客户端的header信息数,writing表示返回给客户端header的信息数,waiting的数值在开启keep-alive情况下等于active-(reading + writing),表示Nginx已处理完正在等待下一次请求的驻留连接数

6.访问控制

Nginx可以实现基于IP和用户的认证功能,以status监控页面为例,我们只允许特定网段的IP来查看监测数据,可以使用allow和deny指令来进行限制

如果想进一步进行设置,可以通过用户basic认证的方式,使用htpasswd工具创建一个用户(也可以直接创建一个系统用户并将密码保存在一个指定文件中)

然后在配置文件中启用认证功能

再刷新页面,就会发现需要密码了

时间: 2024-10-09 20:10:39

Nginx学习笔记(二)——搭建Web服务器的相关文章

Nginx学习笔记二基本配置

1.Nginx的配置文件默认在Nginx程序安装目录的conf二级目录下,主配置文件为nginx.conf.假设您的Nginx安装 在/usr/local/webserver/nginx/目录下,那么默认的主配置文件则为/usr/local/webserver/nginx/nginx.conf.2.Nginx配置参数:(1)user www www 指定使用的用户和用户所在的组(2)worker_processes 8 指定工作衍生进程数(一般等于CPU的总核数或总核数的两倍,如两个四核CPU,

学习 node.js 搭建web服务器

开始 学习使用 node.js 首先完成搭建一个 web服务器.myweb.js 1 var http = require('http'); 2 var url = require('url'); 3 var hostname = '127.0.0.1'; 4 var port = 3000; 5 var bodystr = ""; 6 var server = http.createServer(function(req, res){ 7 res.statusCode = 200;

Linux学习笔记之搭建LNMP服务器环境

LNMP(linux+nginx+mysql+php)服务器环境配置作为新手,肯定是需要linux+nginx+mysql+php这套环境来实验一些东西的,但是网上的教程乱七八糟的,今天我就来分享一个不错的快速集成环境安装包吧系统要求:CentOS/RadHat/Fedora.Debian/Ubuntu/Raspbian/Deepin VPS (1) cd /(2) wget http://www.fuhuijinlai.com/lnmp.zip && unzip lnmp.zip (注意

面向于初学者的Node.js学习笔记 01 搭建静态服务器

希望这篇文章能解决你这样一个问题:“我现在已经了解了一些Node.Js基本概念了,怎么搭一台静态服务器呢?” 请参考一下博主的前两篇文章: 完全面向于初学者的Node.js指南 Node.Js的Module System 以及一些常用 Module 本文实现的效果(样式就没做了,大家将就下): 列出的代码均测试可用,大家放心. What is static server? 静态服务器,有了它呢,就可以让外部访问到咱们的静态网页.在功能上:它可以给用户发送文件(如:HTML, CSS, Js等).

Nginx 学习笔记二

Nginx 连接php 安装php的依赖包 yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl- devel -y 编译安装php ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with- bz2 --with-curl --enable-ftp --e

基于Nginx搭建Web服务器及虚拟主机相关配置详解

随着计算机与Internet技术的高速发展,各种各样的Web站点也就成为面向用户的中坚力量.在各种网站服务器软件中.除了Apache外,还有一款轻量级的HTTP服务器软件--Nginx. 基于Apache搭建Web服务器可以参考博文:基于Apache搭建Web服务器详解 一.Nginx服务简介 Nginx由俄罗斯的lgor Sysoev开发,专为性能优化而开发,其最知名的优点就是它的稳定性和低系统资源消耗.以及对HTTP并发连接的高处立能力(单台物理服务器可支持30000~50000个并发请求)

马哥学习笔记二十八——nginx反向代理,负载均衡,缓存,URL重写及读写分离

Nginx反向代理 Nginx通过proxy模块实现反向代理功能.在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI.客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server).nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上.如下面的示例中,location的/uri将被替换为上游服务器上的/newuri. location /uri { proxy_pa

如何搭建web服务器 使用Nginx搭建反向代理服务器

转载   如何搭建web服务器 使用Nginx搭建反向代理服务器 :   http://blog.csdn.net/w13770269691/article/details/6977727 引言:最近公司有台服务器遭受DDOS攻击,流量在70M以上,由于服务器硬件配置较高所以不需要DDOS硬件防火 墙.但我们要知道,IDC机房是肯定不允许这种流量一直处于这么高的,因为没法具体知道后面陆续攻击的流量会有多大,如果流量过大就会导致整个IDC网络 瘫痪.我们都知道北方的数据中心和南方的数据中心从带宽出

轻松使用Nginx搭建web服务器

如果读者以前做过web开发的话,就应该知道如何去搭建一个web服务器来跑你的web站点,在windows下你可能会选择去用IIS,十分的快捷,在linux下,你可能首先会想到apache,"一哥"( W3Techs网站数据的排名)啦 今天小编要介绍后起之秀nginx来实现web服务器.小编在前面的博客中也详细的聊过apache的使用,如今又来说nginx的使用,读者可能以后搭建web服务器的话就不知道选用哪一种,O(∩_∩)O~,别急,小编这就来给读者分析一下Nginx和Apache区

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在