1、介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了 IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004 年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配 置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3) 代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实 上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站 用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2、前置条件
安装Nginx之前,需要检查系统的基础环境,以确定该环境是否可用于安装Nginx。
建议生产环境下日志文件路径大小不低于10g
1. ANSI-C编译器及编译环境
系统必须有ANSI-C编译器,推荐使用GCC,如果没有GCC,那么确保使用的编译器符合ANSI标准,同时PATH中必须包含指向基本编译工具(比如make)的路径。
可使用gcc -v
命令来确认当前系统已具有GCC编译器。
2. 系统时间
由于HTTP协议的元素都会用到时间,所以有必要了解和确认下当前系统所使用的时间同步机制。在基于网络时间协议(NTP)的系统中,一般是用ntpdate或xntpd来同步时间的。
3. 版本区别以及下载路径
常用版本分为四大阵营
-
Nginx开源版
-
Nginx plus 商业版
-
Openresty
-
Tengine
nginx官方介质下载:http://nginx.org/en/download.html
nginx第三方模块下载:https://www.nginx.com/resources/wiki/modules/
4. 环境确认
1)操作系统版本以及操作系统位数
lsb_release -a
uname -a
cat /etc/redhat-release
cat /proc/version
getconf LONG_BIT
2)检查CPU、物理内存、文件打开句柄数
cat /proc/cpuinfo| grep "processor"| wc -l
free -m
ulimit -n
3)下载安装介质
获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本
获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本
4)sudo配置
在需求端口于1~1024之间时,要通过sudo来启动停止nginx。生产环境中需要请系统或主机组老师帮忙配置sudo:
nginx ALL=(root) NOPASSWD: /opt/nginx/bin/nginx -s stop
nginx ALL=(root) NOPASSWD: /opt/nginx/bin/nginx
nginx ALL=(root) NOPASSWD: /opt/nginx/bin/nginx -s reload
3、安装Nginx
系统环境检查确认无误后,准备好nginx相应版本的安装介质,便可以进入nginx安装环节。
1. 环境介绍
nginx版本 | 安装目录 |
---|---|
1.21 | /opt/nginx |
2. 安装gcc
gcc是linux下的编译器,可以编译 C,C++,Ada,Object C和Java等语言
查看gcc版本(如果安装了gcc):gcc -v
yum -y install gcc
3. 安装pcre、pcre-devel
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre pcre-devel
4. 安装zlib
zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装
yum install -y zlib zlib-devel
5. 安装openssl
openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔
yum install -y openssl openssl-devel
6. 创建nginx用户
# 会自动创建nginx目录
useradd nginx -d /opt/nginx -s /sbin/nologin
7. 安装nginx
1)创建src目录,并将需要的源码文件放入
cd /opt/nginx/src
tar xf nginx-1.21.6.tar.gz
cd /opt/nginx/src/nginx-1.21.6
chown -R nginx:nginx /opt/nginx
2)预编译
./configure --prefix=/opt/nginx/ \
--sbin-path=/opt/nginx/bin/nginx \
--conf-path=/opt/nginx/conf/nginx.conf \
--pid-path=/opt/nginx/nginx.pid \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-stream
–with-http_ssl_module: 提供SSL模块
–with-http_stub_status_module:提供监控模块,
–with-stream:提供TCP代理模块
3)编译、安装
make
make install
4)检查安装情况
/opt/nginx/bin/nginx -V
5)配置环境变量
vim /etc/profile.d/my_env.sh
# 添加如下内容
export NGINX_HOME=/opt/nginx
export PATH=$PATH:${NGINX_HOME}/bin
source /etc/profile
4、nginx基本命令介绍
nginx -h
...
选项:
-?,-h:这有帮助吗
-v:显示版本并退出
-V:显示版本和配置选项,然后退出
-t:测试配置并退出
-T:测试配置,转储并退出
-q:在配置测试期间抑制非错误消息
-s信号:向主进程发送信号:停止、退出、重新打开、重新加载
-p prefix:设置前缀路径(默认值:/opt/nginx/)
-e文件名:设置错误日志文件(默认值:logs/error.log)
-c文件名:设置配置文件(默认值:/opt/nginx/conf/nginx.conf)
-g指令:从配置文件中设置全局指令
5、nginx启停
# 启动
nginx
# 快速停止
nginx -s stop
# 优雅关闭,停止前完成已经接收的连接请求
nginx -s quit
# 重新加载配置
nginx -s reload
6、浏览器访问:403 Forbidden
错误日志显示:
2022/05/05 15:56:56 [error] 65678#0: *1 open() "/opt/nginx//html/favicon.ico" failed (13: Permission denied), client: 192.168.6.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.6.21", referrer: "http://192.168.6.21/"
可以看到没有权限访问,这是由于配置了nginx的用户,但是,nginx的配置文件中并没有设置用户,需要修改配置文件/opt/nginx/conf/nginx.conf
指定用户
vim /opt/nginx/conf/nginx.conf
# 开头添加如下
user nginx;
重新加载配置即可
nginx -s reload
7、隐藏版本号
在nginx.conf配置文件中的http字段添加 server_tokens off;