nginx基础(一)- 环境搭建以及介绍

目录

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官方介质下载: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;