第一步,安装nginx依赖库

安装之前,自己下载的软件压缩包的位置,可以自己选择进行调整

cd /usr/local/src

小贴士:
不要把压缩包解压到/usr/local/nginx目录下,或者将解压后的目录重命名为nginx,因为nginx会默认安装到/usr/local/nginx目录下

(1)请确认gcc 与 g++开发类库是否装好。

yum -y install gcc automake autoconf libtool make(make)
yum install gcc gcc-c++(g++)

(2)安装openssl

wget http://www.openssl.org/source/openssl-fips-2.0.16.tar.gz(openssl)
tar -zxvf openssl-fips-2.0.16.tar.gz
cd openssl-fips-2.0.16
./config && make && make install

(3)安装pcre

wget https://sourceforge.net/projects/pcre/files/pcre/8.43/pcre-8.43.tar.gz
tar -zxvf pcre-8.43.tar.gz
cd pcre-8.43
./configure && make && make install

(4)安装zlib

wget http://zlib.net/zlib-1.2.11.tar.gz(zlib)
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure && make && make install

上述方式属于编译安装,也可以用yum方式安装openssl、pcre、zlib

yum -y install openssl openssl-devel
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel

第二步,开始安装Nginx

wget http://nginx.org/download/nginx-1.15.0.tar.gz(nginx)
tar -zxvf nginx-1.15.0.tar.gz
cd nginx-1.15.0
./configure && make && make install

安装好nginx之后,不要着急去启动,特别不要用下面方式启动

cd /usr/local/nginx/sbin/(nginx)

如果先启动了nginx怎么办,先杀掉所有nginx进程即可,方法如下

ps -ef|grep nginx
kill -9

正确做法是配置nginx的服务(开机自动启动)
(1)切换到/lib/systemd/system/目录,创建nginx.service文件vim nginx.service

cd /lib/systemd/system/
vim nginx.service

nginx.service的文件内容如下:

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx reload
ExecStop=/usr/local/nginx/sbin/nginx quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

退出并保存文件,执行下面的命令使nginx开机启动

systemctl enable nginx.service

设置nginx环境变量

在/etc/profile 中加入

export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

保存文件之后
执行 ​​​source /etc/profile​​ ,使配置文件生效。

更多nginx命令

systemctl start nginx.service      #启动nginx
systemctl stop nginx.service #结束nginx
systemctl restart nginx.service #重启nginx
systemctl status nginx.service #查看nginx启动状态
systemctl status firewalld #查看防火墙状态

如果不是购买的阿里云服务器,此时就可以验证nginx安装是否成功了,验证方法在浏览器输入
​​​http://服务器公网IP/​​​ 如果能看到nginx的界面,就表示安装成功了
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_服务器
如果是购买的阿里云服务器,还需要进入阿里云服务器的控制台设置,安全组,配置规则
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_nginx_02
新买的服务器是没有http,80端口配置的
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_服务器_03
添加安全组规则如下【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_配置文件_04
大功告成


认识nginx的配置文件

1、位置

vim /usr/local/nginx/conf/nginx.conf

2、配置文件中的内容(包含三部分)
(1)全局块:配置服务器整体运行的配置指令
从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配

置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以

及配置文件的引入等。

比如上面第一行配置的:

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是

会受到硬件、软件等设备的制约
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_配置文件_05

(2)events 块:影响 Nginx 服务器与用户的网络连接
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process

下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word

process 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024.

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_nginx_06

(3)http 块
这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http 全局块、server 块。

【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_配置文件_07

①、http 全局块
http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_服务器_08

②、server 块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了

节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
【Linux】nginx配置教程,在购买阿里云服务器centos上安装nginx_服务器_09

全局 server 块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location 块
一个 server 块可以配置多个 location 块。

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称

(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓

存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

关于location块,这个块是用于匹配URL

location [ = | ~ | ~*  ^~ ] uri {
}

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location

块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~ 标识*。