nginx基础1——工作原理、安装配置、命令参数

一、基本了解

nginx简介:

  1. nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
  2. nginx由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。
  3. nginx第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
  4. nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

1.1 特性优点

nginx特性:

  1. 在高连接并发的情况下,nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应。
  2. 使用epoll and kqueue作为开发模型。
  3. nginx作为负载均衡服务器:nginx既可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务。
  4. nginx采用C进行编写,不论系统资源开销还是CPU使用效率都比Perlbal要好很多

nginx优点:

  1. 高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数。
  2. 内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)。
  3. 配置文件非常简单:风格跟程序一样通俗易懂。
  4. 成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
  5. 支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。
  6. 内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问。
  7. 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。
  8. 稳定性高:用于反向代理,宕机的概率微乎其微。
  9. 模块化设计:模块可以动态编译。
  10. 外围支持好:文档全,二次开发和模块较多。
  11. 支持热部署:可以不停机重载配置文件。
  12. 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化

1.2 功能应用

nginx基本功能:

  1. 静态资源的web服务器,能缓存打开的文件描述符。
  2. http、smtp、pop3协议的反向代理服务器。
  3. 缓存加速、负载均衡。
  4. 支持FastCGI(fpm,LNMP),uWSGI(Python)等。
  5. 模块化(非DSO机制),过滤器zip、SSI及图像的大小调整。
  6. 支持SSL。

nginx扩展功能:

  1. 基于名称和IP的虚拟主机。
  2. 支持keepalive长连接。
  3. 支持平滑升级。
  4. 定制访问日志、支持使用日志缓冲区提高日志存储性能。
  5. 支持URL重写。
  6. 支持路径别名。
  7. 支持基于IP及用户的访问控制。
  8. 支持速率限制,支持并发数限制。

nginx应用类别:

  1. 使用nginx结合FastCGI运行PHP、JSP、Perl等程序。
  2. 使用nginx作反向代理、负载均衡、规则过滤。
  3. 使用nginx运行静态HTML网页、图片。
  4. nginx与其他新技术的结合应用。

1.3 工作模块分类

基本了解:

  • nginx由内核和模块组成。内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
  • location是nginx配置文件中的一个参数,指定网页访问的根地址,location参数后面指定要访问的网页文件路径。
  • nginx的模块从结构上分为核心模块、基础模块和第三方模块

模块分类:

  • 核心模块:HTTP模块(访问网站)、EVENT模块(记录事件)、MAIL模块(发送邮件)等。
  • 基本模块:HTTP Access模块(访问)、HTTP FastCGI模块(lnmp)、HTTP Proxy模块(反向代理)、HTTP Rewrite模块(重定向URL)。
  • 第三方模块:HTTP Upstream模块、Request Hash模块、Notice模块和HTTP Access Key模块。

注意事项:

  1. 基本模块在编译时默认是开启状态,不能被禁用。
  2. 基本模块包括:
    • 核心模块(提供基本功能和指令),常见核心模块指令大部分是放置在配置文件的顶部,需要顶行写,不能有空格和括号包含关系。
    • 事件模块(Nginx内配置网络使用的能力),常见的events(事件)模块指令,大部分是放置在配置文件的顶部。
    • 配置模块(提供包含机制),指主配置文件中可以通过引用其他路径下的配置文件参数实现功能,可以简化配置文件,方便阅读。
功能模块分类作用
Proxies(代理器模块)就是nginx的HTTP Upstream之类的模块,主要与后端服务比如fastcgi等操作交互,实现服务代理和负载均衡等功能。
Handlers(处理器模块)此类模块直接处理请求,并进行输出内容和修改headers信息等操作。handlers处理器模块一般只能有一个。
Filters(过滤器模块)此类模块主要对其他处理器模块输出的内容进行修改操作,最后由nginx输出。

1.4 模块配置方法

1.如下图。这个核心模块参数可以配置在配置文件中的events中的括号里。
在这里插入图片描述
2.如下图。这个配置参数只能单独写一行,且顶行写,不能存在任何一个括号里。
在这里插入图片描述
3.如下图。这个配置参数可以配置在main, http, mail, stream, server, location任意位置。

  • main:对本机所有网站生效。
  • http:对所有server网站生效。
  • server:对某一个网站生效。
  • location:对某一个网站中的某一个访问页面生效。

在这里插入图片描述

二、工作原理

基本了解:

  • nginx的模块直接被编译进nginx,属于静态编译。若要使用其他模块功能时,再添加模块编译,属于动态编译。
  • 启动nginx后,nginx的模块被自动加载,与Apache不一样,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。
  • 在解析配置文件时,nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。

nginx进程架构:

  1. 启动nginx时,会启动一个Master进程,这个进程不处理任何客户端的请求,主要用来产生worker线程。
  2. 每个worker线程下有多个工作模块,根据不同的客户端请求,各个工作模块分别对应处理一个请求。
  3. 当客户端请求web网站时,实际上是请求master进程产生的worker线程中的工作模块。
    在这里插入图片描述

HTTP请求和响应的过程:

  1. 客户端发出请求,经过负载均衡高可用代理服务器后,到达某一台nginx服务器。
  2. nginx程序收到请求后,选择一个处理器模块进行处理,再通过过滤器模块生成请求内容,再继续剩下内容处理。
  3. 最后将处理结果发送给客户端。
    在这里插入图片描述

WEB服务请求步骤:

  1. 客户端访问网站url,比如访问的是80端口,就需要建立tcp连接进行三次握手。
  2. 建立连接后,nginx服务端收到客户端请求,开始调用处理器模块处理请求,根据客户端的请求去寻找资源。
  3. 找到资源后,就开始输出结果,建立响应报文,最后发送给客户端。
  4. 最后,nginx服务端记录整个过程的日志。
    在这里插入图片描述

三、安装与配置

1.创建系统用户nginx。

useradd -r -M -s /sbin/nologin nginx

2.安装依赖包。

yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
yum -y groups mark install 'Development Tools'

3.创建日志存放目录。

mkdir -p /var/log/nginx
chown -R nginx.nginx /var/log/nginx

4.下载nginx安装包,,解压,编译安装。

wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0

//编译模块。
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log

//安装。
make -j $(nproc) && make install

5.配置环境变量,启动nginx服务。

echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
source /etc/profile.d/nginx.sh

//启动。
nginx

6.访问web网页。

在这里插入图片描述

四、常用命令

参数释义
-t检查配置文件语法
-v输出nginx的版本
-c指定配置文件的路径,启动nginx时可以指定其他配置文件。
-s发送服务控制信号,可选值有stop、quit、reopen、reload。
-V编译时使用的参数

1.检查使用的配置文件语法是否正确。
在这里插入图片描述

2.查看nginx已编译安装的模块。若要继续添加模块,则需要把已安装的模块一起写进去编译。
在这里插入图片描述
3.重启nginx服务,一般都是先停止,再重新启动。
在这里插入图片描述
4.重新读取配置文件。

nginx -s reload
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
安装nginx命令配置命令如下: 在Ubuntu上安装nginx: 1. 更新软件包列表:sudo apt update 2. 安装nginx:sudo apt install nginx 在CentOS上安装nginx: 1. 安装epel-release仓库:sudo yum install epel-release 2. 安装nginx:sudo yum install nginx配置文件中,你可以使用以下命令进行基本的配置: 1. 打开nginx配置文件:sudo nano /etc/nginx/nginx.conf 2. 配置基本设置: - 设置工作进程数:在 `worker_processes` 指令中设置工作进程数,如 `worker_processes auto;` - 设置用户和用户组:在 `user` 指令中设置用户和用户组,如 `user nginx;` - 设置日志文件路径:在 `error_log` 和 `access_log` 指令中设置错误日志和访问日志的路径,如 `error_log /var/log/nginx/error.log;` 和 `access_log /var/log/nginx/access.log;` 3. 配置虚拟主机: - 在 `/etc/nginx/conf.d/` 目录下创建一个新的配置文件,如 `mywebsite.conf` - 在配置文件中添加以下内容: ``` server { listen 80; server_name example.com; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; } } ``` 4. 配置反向代理: - 在虚拟主机配置中添加以下内容: ``` location /api { proxy_pass http://backend_server; } ``` 5. 配置静态文件目录: - 在虚拟主机配置中添加以下内容,将 `/static` 的请求映射到 `/var/www/html/static` 目录下的静态文件: ``` location /static { alias /var/www/html/static; } ``` 6. 配置SSL/TLS: - 在虚拟主机配置中添加以下内容来启用HTTPS支持: ``` listen 443 ssl; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private_key.key; ``` 7. 检查配置文件语法:使用命令 `sudo nginx -t` 检查配置文件的语法是否正确。 8. 重启nginx:使用命令 `sudo systemctl restart nginx` 重启nginx服务。 请注意,具体的路径和文件名可能因你的实际情况而有所不同。在修改配置文件之前,建议备份原始配置文件,以防出现问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百慕卿君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值