Nginx定义
Nginx是一款轻量级的高性能的Web服务器和反向代理服务器,是由俄罗斯的程序设计师Igor Sysoev所开发。
Nginx 处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。
Nginx特点
由于以下这几点,所以使用Nginx非常火,在互联网项目中广泛应用。
- 相较于 Apache具有占有内存少、稳定性高、并发能力强等优势;
- Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接;
- 高度的模块化、扩展性好、和自由软件许可证、使得第三方模块层出不穷;
- Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、Mac OS 等操作系统上。
Nginx功能应用
1.正向代理
正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。
例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。
来看个示意图:
我们可以通过这种方式,访问原来无法访问的资源,比如: Google。
2.反向代理
反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。
来看个示意图:
由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
3.负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。
来个示意图:
将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡。
4.动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
来个示意图:
Nginx下载
1.Nginx官网下载
Nginx下载地址:https://nginx.org/en/download.html
2.下载稳定版
如下图所示:
然后再把Nginx的下载包上传Linux服务器。
Nginx安装
Nginx安装步骤如下:
1.安装依赖环境
检查linux服务器中是否存在: gcc-c++、 pcre-devel、 zlib-devel、openssl-devel,没有就安装相关的依赖。
如果都没有安装,使用如下语句安装:
- yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
2.解压压缩包
tar -zxvf nginx-1.20.2.tar.gz
需要注意:解压后得到的是源码,源码需要编译后才能安装。
3.编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错
mkdir /var/temp/nginx -p
4.在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注:代表在命令行中换行,用于提高可读性配置命令:

5.make编译&安装
make
make install
6.进入sbin目录启动nginx
启动:nginx
停止:./nginx -s stop
重新加载:./nginx -s reload
在浏览器访问nginx,记得要在防火墙中放行80端口。
Nginx命令
Nginx常用命令:
- nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
- nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
- nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
- nginx -s reopen 重新打开日志文件。
- nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
- nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
- nginx -v 显示 nginx 的版本。
- nginx -V 显示 nginx 的版本,编译器版本和配置参数。
Nginx目录结构
- ├── conf # Nginx所有配置文件的目录
- │ ├── fastcgi.conf # fastcgi相关参数的配置文件
- │ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
- │ ├── fastcgi_params # fastcgi的参数文件
- │ ├── fastcgi_params.default
- │ ├── koi-utf
- │ ├── koi-win
- │ ├── mime.types # 媒体类型
- │ ├── mime.types.default
- │ ├── nginx.conf # Nginx主配置文件
- │ ├── nginx.conf.default
- │ ├── scgi_params # scgi相关参数文件
- │ ├── scgi_params.default
- │ ├── uwsgi_params # uwsgi相关参数文件
- │ ├── uwsgi_params.default
- │ └── win-utf
- ├── fastcgi_temp # fastcgi临时数据目录
- ├── html # Nginx默认站点目录
- │ ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
- │ └── index.html # 默认的首页文件
- ├── logs # Nginx日志目录
- │ ├── access.log # 访问日志文件
- │ ├── error.log # 错误日志文件
- │ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
- ├── proxy_temp # 临时目录
- ├── sbin # Nginx命令目录
- │ └── nginx # Nginx的启动命令
- ├── scgi_temp # 临时目录
- └── uwsgi_temp # 临时目录
Nginx配置文件
Nginx配置文件所在位置:nginx/conf/nginx.conf。
1.Nginx配置结构
- main # 全局配置,对全局生效
- ├── events # 配置影响 nginx 服务器或与用户的网络连接
- ├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
- │ ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
- │ ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
- │ ├── server
- │ │ ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri
- │ │ ├── location
- │ │ └── ...
- │ └── ...
- └── ...
2.Nginx配置含义
- 全局块main:nginx 的全局配置,对全局生效;
- events:配置影响 nginx 服务器或与用户的网络连接;
- http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
- server:配置虚拟主机的相关参数,一个 http 中可以有多个 server;
- location:配置请求的路由,以及各种页面的处理情况;
- upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。
3.Nginx配置文件
- worker_processes 1; # worker进程的数量
- events { # 事件区块开始
- worker_connections 1024; # 每个worker进程支持的最大连接数
- } # 事件区块结束
- http { # HTTP区块开始
- include mime.types; # Nginx支持的媒体类型库文件
- default_type application/octet-stream; # 默认的媒体类型
- sendfile on; # 开启高效传输模式
- keepalive_timeout 65; # 连接超时
- server { # 第一个Server区块开始,表示一个独立的虚拟主机站点
- listen 80; # 提供服务的端口,默认80
- server_name localhost; # 提供服务的域名主机名
- location / { # 第一个location区块开始
- root html; # 站点的根目录,相当于Nginx的安装目录
- index index.html index.htm; # 默认的首页文件,多个用空格分开
- } # 第一个location区块结果
- error_page 500502503504 /50x.html; # 出现对应的http状态码时,使用50x.html回应客户
- location = /50x.html { # location区块开始,访问50x.html
- root html; # 指定对应的站点目录为html
- }
- }
- ......
Nginx配置使用实例
1.反向代理配置实例
- worker_processes 1;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- server {
- listen 80;
- #server_name localhost;
- server_name 192.168.71.167;
- location / {
- root html;
- #添加下面的一句话
- proxy_pass http://127.0.0.1:8080;
- index index.html index.htm;
- }
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- }
- }
2.负载均衡配置实例
- worker_processes 1;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- upstream myserver{
- #ip_hash;
- server 192.168.71.167:8080 weight=1;
- server 192.168.71.167:8081 weight=1;
- }
- server {
- listen 80;
- #server_name localhost;
- server_name 192.168.71.167;
- location / {
- root html;
- proxy_pass http://myserver;
- proxy_connect_timeout 10;
- index index.html index.htm;
- }
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- }
- }