生命不息,奋斗不止/创造价值-传递价值-获得价值
所谓迷茫,就是才华配不上梦想 每一个让你难堪的现在,都有一个不够努力的曾经

Nginx教程(万字图文全面详解)

Nginx教程(万字图文全面详解)-mikechen

Nginx定义

Nginx是一款轻量级的高性能的Web服务器和反向代理服务器,是由俄罗斯的程序设计师Igor Sysoev所开发。

Nginx教程(万字图文全面详解)-mikechen

Nginx 处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

Nginx特点

由于以下这几点,所以使用Nginx非常火,在互联网项目中广泛应用。

  • 相较于 Apache具有占有内存少、稳定性高、并发能力强等优势;
  • Nginx 使用基于事件驱动架构,使得其可以支持数以百万级别的 TCP 连接;
  • 高度的模块化、扩展性好、和自由软件许可证、使得第三方模块层出不穷;
  • Nginx 是一个跨平台服务器,可以运行在 Linux、Windows、Mac OS 等操作系统上。

Nginx功能应用

Nginx教程(万字图文全面详解)-mikechen

1.正向代理

正向代理最大的特点是:客户端非常明确要访问的服务器地址,服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,正向代理模式屏蔽或者隐藏了真实客户端信息。

例如:在大陆访问www.google.com,我们需要一个代理服务器,我们通过代理服务器去访问谷歌,这个过程就是正向代理。

来看个示意图:

Nginx教程(万字图文全面详解)-mikechen

我们可以通过这种方式,访问原来无法访问的资源,比如: Google。

2.反向代理

反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器。

来看个示意图:

Nginx教程(万字图文全面详解)-mikechen

由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

3.负载均衡

单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。

来个示意图:

Nginx教程(万字图文全面详解)-mikechen

将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器,这就是我们说的负载均衡

4.动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

来个示意图:

Nginx教程(万字图文全面详解)-mikechen

Nginx下载

1.Nginx官网下载

Nginx下载地址:https://nginx.org/en/download.html

2.下载稳定版

如下图所示:

Nginx教程(万字图文全面详解)-mikechen

然后再把Nginx的下载包上传Linux服务器。

Nginx安装

Nginx安装步骤如下:

1.安装依赖环境

检查linux服务器中是否存在: gcc-c++、 pcre-devel、 zlib-devel、openssl-devel,没有就安装相关的依赖。

如果都没有安装,使用如下语句安装:

  1. yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

2.解压压缩包

  1. tar -zxvf nginx-1.20.2.tar.gz

Nginx教程(万字图文全面详解)-mikechen

需要注意:解压后得到的是源码,源码需要编译后才能安装。

3.编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错

  1. mkdir /var/temp/nginx -p

4.在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件

  1. ./configure \
  2. --prefix=/usr/local/nginx \
  3. --pid-path=/var/run/nginx/nginx.pid \
  4. --lock-path=/var/lock/nginx.lock \
  5. --error-log-path=/var/log/nginx/error.log \
  6. --http-log-path=/var/log/nginx/access.log \
  7. --with-http_gzip_static_module \
  8. --http-client-body-temp-path=/var/temp/nginx/client \
  9. --http-proxy-temp-path=/var/temp/nginx/proxy \
  10. --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
  11. --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
  12. --http-scgi-temp-path=/var/temp/nginx/scgi

注:代表在命令行中换行,用于提高可读性配置命令:

Nginx教程(万字图文全面详解)-mikechen

5.make编译&安装

  1. make
  2. make install

6.进入sbin目录启动nginx

  1. 启动:nginx
  2. 停止:./nginx -s stop
  3. 重新加载:./nginx -s reload

在浏览器访问nginx,记得要在防火墙中放行80端口。

Nginx教程(万字图文全面详解)-mikechen

Nginx命令

Nginx常用命令:

  1. nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
  2. nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
  3. nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
  4. nginx -s reopen 重新打开日志文件。
  5. nginx -c filename Nginx 指定一个配置文件,来代替缺省的。
  6. nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
  7. nginx -v 显示 nginx 的版本。
  8. nginx -V 显示 nginx 的版本,编译器版本和配置参数。

Nginx目录结构

  1. ├── conf # Nginx所有配置文件的目录
  2. ├── fastcgi.conf # fastcgi相关参数的配置文件
  3. ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
  4. ├── fastcgi_params # fastcgi的参数文件
  5. ├── fastcgi_params.default
  6. ├── koi-utf
  7. ├── koi-win
  8. ├── mime.types # 媒体类型
  9. ├── mime.types.default
  10. ├── nginx.conf # Nginx主配置文件
  11. ├── nginx.conf.default
  12. ├── scgi_params # scgi相关参数文件
  13. ├── scgi_params.default
  14. ├── uwsgi_params # uwsgi相关参数文件
  15. ├── uwsgi_params.default
  16. └── win-utf
  17. ├── fastcgi_temp # fastcgi临时数据目录
  18. ├── html # Nginx默认站点目录
  19. ├── 50x.html # 错误页面优雅替代显示文件,例如当出现502错误时会调用此页面
  20. └── index.html # 默认的首页文件
  21. ├── logs # Nginx日志目录
  22. ├── access.log # 访问日志文件
  23. ├── error.log # 错误日志文件
  24. └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
  25. ├── proxy_temp # 临时目录
  26. ├── sbin # Nginx命令目录
  27. └── nginx # Nginx的启动命令
  28. ├── scgi_temp # 临时目录
  29. └── uwsgi_temp # 临时目录

Nginx配置文件

Nginx配置文件所在位置:nginx/conf/nginx.conf。

1.Nginx配置结构

  1. main # 全局配置,对全局生效
  2. ├── events # 配置影响 nginx 服务器或与用户的网络连接
  3. ├── http # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
  4. ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分
  5. ├── server # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块
  6. ├── server
  7. ├── location # server 块可以包含多个 location 块,location 指令用于匹配 uri
  8. ├── location
  9. └── ...
  10. └── ...
  11. └── ...

2.Nginx配置含义

Nginx教程(万字图文全面详解)-mikechen

  • 全局块main:nginx 的全局配置,对全局生效;
  • events:配置影响 nginx 服务器或与用户的网络连接;
  • http:可以嵌套多个 server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
  • server:配置虚拟主机的相关参数,一个 http 中可以有多个 server;
  • location:配置请求的路由,以及各种页面的处理情况;
  • upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

3.Nginx配置文件

  1. worker_processes  1                                    # worker进程的数量
  2. events {                                                  # 事件区块开始
  3.     worker_connections  1024                            # 每个worker进程支持的最大连接数
  4. }                                                        # 事件区块结束
  5. http {                                                   # HTTP区块开始
  6.     include       mime.types                            # Nginx支持的媒体类型库文件
  7.     default_type  application/octet-stream             # 默认的媒体类型
  8.     sendfile        on                                   # 开启高效传输模式
  9.     keepalive_timeout  65                               # 连接超时
  10.     server {                                            # 第一个Server区块开始,表示一个独立的虚拟主机站点
  11.         listen       80                                  # 提供服务的端口,默认80
  12.         server_name  localhost                           # 提供服务的域名主机名
  13.         location / {                                    # 第一个location区块开始
  14.             root   html                               # 站点的根目录,相当于Nginx的安装目录
  15.             index  index.html index.htm                  # 默认的首页文件,多个用空格分开
  16.         }                                                  # 第一个location区块结果
  17.         error_page   500502503504  /50x.html             # 出现对应的http状态码时,使用50x.html回应客户
  18.         location = /50x.html {                          # location区块开始,访问50x.html
  19.             root   html                                  # 指定对应的站点目录为html
  20.         }
  21.     }  
  22.     ......

Nginx配置使用实例

1.反向代理配置实例

  1. worker_processes 1;
  2.  
  3. events {
  4. worker_connections 1024;
  5. }
  6.  
  7. http {
  8. include mime.types;
  9. default_type application/octet-stream;
  10. sendfile on;
  11. keepalive_timeout 65;
  12. server {
  13. listen 80;
  14. #server_name localhost;
  15. server_name 192.168.71.167;
  16. location / {
  17. root html;
  18. #添加下面的一句话
  19. proxy_pass http://127.0.0.1:8080;
  20. index index.html index.htm;
  21. }
  22. error_page 500 502 503 504 /50x.html;
  23. location = /50x.html {
  24. root html;
  25. }
  26. }
  27. }
  28.  

2.负载均衡配置实例

  1. worker_processes 1;
  2.  
  3. events {
  4. worker_connections 1024;
  5. }
  6.  
  7. http {
  8. include mime.types;
  9. default_type application/octet-stream;
  10. sendfile on;
  11. keepalive_timeout 65;
  12.  
  13. upstream myserver{
  14. #ip_hash;
  15. server 192.168.71.167:8080 weight=1;
  16. server 192.168.71.167:8081 weight=1;
  17. }
  18.  
  19. server {
  20. listen 80;
  21. #server_name localhost;
  22. server_name 192.168.71.167;
  23. location / {
  24. root html;
  25. proxy_pass http://myserver;
  26. proxy_connect_timeout 10;
  27. index index.html index.htm;
  28. }
  29. error_page 500 502 503 504 /50x.html;
  30. location = /50x.html {
  31. root html;
  32. }
  33. }
  34. }

赞(0)
未经允许不得转载:jack361博客 » Nginx教程(万字图文全面详解)

如果你爱我或恨我,请↓

联系我