nginx基础知识介绍与安装过程,及配置文件详解

1.什么是nginx?

Nginx是一个http服务器(web服务器)。是一个使用c语言开发的高性能的http服务器及反向代理服务器。在官方网站下载源代码,

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行
其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝

2.nginx的优点?

Nginx 可以在大多数 Unix Linux OS 上编译运行,并有 Windows 移植版。
Nginx 的1.4.0稳定版已经于2013年4月24日发布
一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高
Nginx 的源代码使用 2-clause BSD-like license。
Nginx 是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性

  • (1)适用于高并发 在连接高并发的情况下,Nginx是Apache服务不错的替代品
    Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一 能够支持高达 50,000
    个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型
  • (2)可以做负载均衡服务器和HTTP服务器 Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP
    程序对外进行服务 也可以支持作为 HTTP代理服务对外进行服务,Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比
    Perlbal 要好很多 处理静态文件,索引文件以及自动索引,打开文件描述符缓冲 无缓存的反向代理加速,简单的负载均衡和容错
    FastCGI,简单的负载均衡和容错 模块化的结构,包括 gzipping, byte ranges, chunked
    responses,以及 SSI-filter 等 filter 如果由 FastCG或其它代理服务器处理单页中存在的多个
    SSI,则这项处理可以并行运行,而不需要相互等待 支持 SSL 和 TLSSNI
  • (3)代码的特点 Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统
    包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows
    Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函
    而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库
  • (4)可以作为代理服务器 作为邮件代理服务:Nginx 同时也是一个非常优秀的邮件代理服务
    (最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验 Nginx
    是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务 Nginx
    启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动 你还能够不间断服务的情况下进行软件版本的升级

3.Nginx安装包的下载与安装

编译安装
开源版官网:nginx.org
商业版官网:nginx.com
我们可以打开如下官网连接,查看上述各个版本的信息。
http://nginx.org/en/download.html

主线版本:“Mainline version”,也有人称之为主干版或者开发版,主线版本通常是最新的版本,主线版通常会加入一些最新的功能,这些功能可能没有经过太多的测试,所以相对可能不太稳定,在真正的生产环境中,通常不会使用主线版本。
稳定版本:“Stable version”,稳定版通常是由主线版发展而来的,稳定版通常是经过官方测试的,是官方认为相对稳定的版本,生产环境中通常会使用稳定版。
历史版本:“Legacy version”,当新的稳定版出现,那么原先的稳定版就会被归类到“历史>版本“中去

在官网上下载nginx安装包
解压下载的安装包:

[root@server1 ~]# tar zxf nginx-1.16.1.tar.gz 
[root@server1 ~]# cd nginx-1.16.1
[root@server1 nginx-1.16.1]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

目录中的文件含义是:

此目录中的configure脚本文件,可以进行一些编译安装的相关设置,如果你想要看看当前的版本的Nginx都修复了哪些bug、做了哪些变更、新增了哪些功能,则可以查看CHANGES文件,CHANGES.ru文件是CHANGES文件的俄语版,因为nginx是俄国人发明的,所以有一个单独的俄语版,conf目录中的文件是一些nginx配置文件的模板文件,编译安装时,这些文件最终会被拷贝到安装目录中,html目录中的文件是一些静态页面的模板文件,src目录是源代码目录,man目录是帮助文档的目录,contrib目录中的vim目录中的文件可以帮助我们在使用vim编辑nginx配置文件的时候,提供语法高亮功能。

执行./configure --help命令后,可以看到很多选项信息,使用–prefix选项可以指定nginx编译安装目录,nginx是高度模块化的,每一个模块就代表一个功能,只有编译安装的方式才能指定安装哪些模块,不安装哪些模块,--with-XXX_module选项表示指明安装对应的模块,--without-XXX_module选项表示指明不安装对应的模块。

换句话说就是:
如果你没有明确使用–with-AXX_module选项,那么默认情况下是不会安装AXX模块的。
如果你没有明确使用–without-BXX_module选项,那么默认情况下是会安装BXX模块的。
使用–with-XXX_module选项添加默认未加入的模块,使用–with-XXX_module选项排除默认会加入的模块。
能够使用“–with-XXX_module”和“–without-XXX_module”控制的模块都是可选模块,也就是说我们可以选择是否安装它们,除了这些“可选模块”,还有一些“标准”模块是默认安装到nginx中的,我们无法选择是否安装这些表准“模块”。

(1)编译安装nginx需要先解决依赖性:

yum install gcc openssl-devel pcre-devel -y

此外,还有一个gd-devel需要自己下载安装,下载地址:https://centos.pkgs.org/7/centos-x86_64/gd-devel-2.0.35-26.el7.x86_64.rpm.html,安装:

yum install gd-devel-2.0.35-26.el7.x86_64.rpm -y

(2)编译并安装:

注意:编译必须进到nginx解压的目录中

[root@server1 nginx-1.16.1]   ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
[root@server1 nginx-1.16.1]# make && make install

(3)安装后

[root@server1 nginx-1.16.1]# cd /usr/local/nginx/				#进入安装目录
[root@server1 nginx]# ls
conf  html  logs  modules  sbin

其中:
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf
则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,
配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。
html目录中保存了nginx服务器的web文件,其中index.html文件是默认发布文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。
modules:存放了一些模板会用到的库。
sbin:保存nginx二进制启动脚本,我们需要nginx二进制文件启动nginx:

/usr/local/nginx/sbin/nginx				#启动nginx

在浏览器中访问的是安装nginx服务器的ip地址,显示如下
nginx基础知识介绍与安装过程,及配置文件详解_第1张图片
至此nginx安装成功

4.nginx的主配置文件

conf目录下的nginx.conf文件是nginx服务器的最核心最主要的配置文件,默认情况下,nginx.conf文件中会有很多注释的行,这些注释行是nginx官方为我们准备的一些配置示例,可以执行如下命令,将默认的注释行删除:

sed -i '/^[[:space:]]*#/'d nginx.conf
http {
	
	...
	...
	
	server {
		...
		...
		
		location ... {
				...
				...
		}
		
	}

	server {
		...
		...
	}
	

}

从上述语法配置示例可以看出,上述示例可以分为几个逻辑部分,http部分、server部分、location部分,,每个部分都是使用大括号"{ }"作为分界线的,而且,从缩进可以看出,它们是有层级关系的,http中可以配置多个server,一个server中可以配置多个location,我们知道,nginx最基础的功能就是用来提供http服务,所以,跟http有关的公共配置,可以放置在http块中,http块中又可以配置多个server,那么server代表了什么呢?我们在一台主机中安装了nginx,那么能不能让这台nginx主机同时提供多个web服务呢?答案是肯定的,每一个server就代表一个http服务,我们可以同时配置多个server,以便同时提供多个http服务,不同的server可以使用不同的配置,写入到某个server块中的配置只对对应的http服务生效,如果多个server存在共同的公用配置,则可以将共同的配置写在http块中,以便多个server共享这些配置,一个server块中又可以有一个或多个location,location又是什么意思呢?当我们访问一个网络上的资源时,都是通过url访问的,你可以把location当做url的一部分,此处,我们使用如下url作为示例:

httpl//www.westos.org/westos/1591

上述链接中的"/westos“部分就是一个location,我们可以通过location将url中的路径和服务器的某个目录建立起关联关系

正如上面的示例所示,当我访问
当我访问"http://10.1.1.72/"这个网址时,默认会访问到nginx服务器上的/usr/local/nginx/html/index.html文件,之所以会访问到这个文件,是由下面这段配置决定的:
nginx基础知识介绍与安装过程,及配置文件详解_第2张图片

刚才说过,location可以理解成url的一部分,那么当我们访问http://172.25.1.1/这个url时,这个url的最后一个/其实就是上图中的location /,换句话说就是,上图中红线标记出的/其实对应的就是http://10.1.1.72/这个url的最后一个/,这个location块中有两条配置指令,它们分别是root和index

root配置指令的意思是:当前location所对应的文档根目录是哪里,root
html;表示当前location的文档根目录是html目录,文档根目录的意思就是当有人访问/这个路径时,去服务器的哪个目录中找对应的资源。

index指令表示当没有指明任何资源时,默认访问哪个资源

你可能感兴趣的:(企业实战)