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指令引用局部配置段。

wKioL1mB-gWxq7QOAABfINFb1wc248.png

上图中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段定义

wKiom1mB-gWQIB-tAAAKzT2MDcA820.png

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段定义

wKioL1mB-gaxBTI8AABEKJkdsLo041.png

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进行路径别名设置

wKiom1mB-gbh8HRwAAANuSiNfkM973.png

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

5.状态监测

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

wKiom1mB-gbTbGhRAAAHUuy7WLU647.png

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

wKioL1mB-gfRSrWwAABEtKEgGK0599.png

6.访问控制

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

wKiom1mB-gfjAydyAAAM0PdwUF8200.png

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

wKioL1mB-giyYa3QAAAo4_8fT5E346.png

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

wKiom1mB-gmw9e5UAAAbvx-ZRSE079.png

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

wKioL1mB-gmgDgC5AAAwzLqs-6s560.png



本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/1953165

相关文章
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
27 0
|
2月前
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
计算机网络:思科实验【1-访问WEB服务器】
|
2月前
|
数据可视化 Shell Linux
shell+crontab+gitlab实现ecs服务器文件的web展示
本文通过把ecs服务器上的文件定时上传至gitlab,实现文件的页面可视化和修改历史。技术点:shell、crontab、gitlab。
51 3
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
164 0
|
1月前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
50 0
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
1月前
|
Windows
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
Windows Server 各版本搭建 Web 服务器实现访问本地 Web 网站(03~19)
57 2
|
1月前
|
机器学习/深度学习 Python
Python基础:构建一个简单的Web服务器
Python基础:构建一个简单的Web服务器
57 1
|
1月前
|
应用服务中间件 Apache nginx
web后端-web服务器对比
web后端-web服务器对比
|
1月前
|
安全 应用服务中间件 nginx