NGINX 入门指导
简介
Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理和负载均衡。
快速入门
安装 nginx
sudo apt-get install nginx
卸载 nginx
sudo apt-get uninstall nginx
启动 nginx
nginx
停止 nginx
nginx -s stop
热重启 nginx
nginx -s reload
CentOS 中安装
安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
安装 下载 PCRE
PCRE 作用是让 Nginx 支持 Rewrite 功能。
这里有两个非常容易出问题的地方,第一个是安装 PCRE 的版本,在 PCRE 官网中我们得知 PCRE2 在 2015 年已经发布了,按照软件更新的规律,现在 NGINX 应该可以支持 PCRE2,但经过实际安装试错发现它并没有支持 PCRE2,在 StackOverflow 上更是说需要用 PCRE。
第二个问题是在编译 NGINX 时的编译参数问题,--with-pcre
和 --with-pcre=
都加上肯定没问题,问题出在 --with-pcre=
的目录上,正如这一小节标题所说,正常安装 PCRE 并将库文件目录指定给 NGINX 是不行的,在同时指定 openssl 和 pcre 时,必须指定这两个项目的源码,因为 openssl 系统已经有了,所以我们需要指定 pcre 的源码,在其不再支持第一版后,最终版本就是 8.45。
-
下载 PCRE 源文件,下载地址。
再把文件传到服务器上。
-
解压代码包。
unzip pcre-8.45.zip
安装 Nginx
-
下载 Nginx,下载地址 。
cd /usr/local/src/ wget https://nginx.org/download/nginx-1.20.1.tar.gz
-
解压安装包
tar zxvf nginx-1.20.1.tar.gz
-
编译安装
# 添加用户和组 groupadd www useradd -g www www # 进入安装目录 cd nginx-1.20.1/ # 配置 ./configure \ --user=www \ --group=www \ --prefix=/usr/local/nginx \ --with-stream \ --with-stream_ssl_preread_module \ --with-http_ssl_module \ --with-http_stub_status_module \ --with-http_realip_module \ --with-http_dav_module \ --with-http_gzip_static_module \ --with-http_v2_module \ --with-pcre \ --with-pcre=/usr/local/src/pcre-8.45 # 编译并安装 make && make install
修改配置
设置开机自启动
-
在系统服务目录里创建 nginx.service 文件
vi /usr/lib/systemd/system/nginx.service
-
写入内容如下
[Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
[Unit]: 服务的说明
Description: 描述服务
After: 描述服务类别
[Service]: 服务运行参数的设置
Type=forking: 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecReload 为重启命令
ExecStop 为停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:[Service] 的启动、重启、停止命令全部要求使用绝对路径
[Install] 运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为 3
-
设置开机自启动
systemctl enable nginx.service
该步骤之后需要重启服务器才能成功配置。
常用目录 (in docker)
/etc/nginx/nginx.conf
nginx 配置文件路径/usr/share/nginx/html
nginx 服务器默认的根目录/var/log/nginx
nginx 服务器默认的日志目录
配置文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
- 全局块:配置影响 nginx 全局的指令。一般有运行 nginx 服务器的用户组,nginx 进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数等。
- events 块:配置影响 nginx 服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网络连接,开启多个网络连接序列化等。
- http 块:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type 定义,日志自定义,是否使用 sendfile 传输文件,连接超时时间,单连接请求数等。
- server 块:配置虚拟主机的相关参数,一个 http 中可以有多个 server。
- location 块:配置请求的路由,以及各种页面的处理情况。
官方文档: 连接