Nginx(一文快速上手Nginx)

90 阅读3分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情

1. 什么是Nginx

    Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。
    其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
    Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

2. Nginx的作用

  • 正向代理、反向代理。
  • 负载均衡、支持轮询(round robin)、轮询权重(weight)、ip_hash、url_hash、fair算法。
  • 高性能,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源。
  • 高可用、支持热部署。
  • 实现动静分离。

3. Nginx安装与常用命令

nginx下载

3.1 window安装Nginx

1. 下载nginx window版本,并解压。(注:解压文件夹路径最好不含中文)
2. 双击nginx.exe,启动nginx
3. 直接在浏览器地址栏输入网址 http://localhost:80 回车,出现以下页面说明启动成功!

image.png

4. nginx.conf配置文件,修改nginx端口监听和代理
5. 关闭nginx命令:nginx -s stop 或 nginx -s quit

3.2 linux安装Nginx

1. 下载nginx linux版本,上传至服务器并解压,解压命令:tar -zxvf 压缩包名
2. 执行以下命令,构建启动nginx。
./configure
make
make install    
./nginx #启动nginx
3. nginx.conf配置文件,修改nginx端口监听和代理
4. ./nginx -s stop 停止nginx ./nginx -s quit 退出nginx

3.3 Nginx常用命令

cd /usr/local/nginx/sbin/
./nginx -v            # 查看版本
./nginx -t            # 检查配置文件配置
./nginx               # 启动
./nginx -s stop       # 停止
./nginx -s quit       # 安全退出
./nginx -s reload     # 重新加载配置文件
ps aux|grep nginx     # 查看nginx进程

3.4 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块:配置请求的路由,以及各种页面的处理情况。