博客
关于我
nginx详细使用教程
阅读量:425 次
发布时间:2019-03-06

本文共 2682 字,大约阅读时间需要 8 分钟。

Nginx 高级配置指南

1. 简介

Nginx 是一款高性能、稳定且功能强大的 HTTP 和反向代理服务器,也是一款 IMAP/POP3 代理服务器。它广泛应用于负载均衡、静态资源服务器、反向代理以及高并发场景下的内容缓存等场景。以下将从安装、配置到反向代理及负载均衡等方面详细阐述 Nginx 的使用方法。

2. 安装

2.1 源码安装

Nginx 可以通过源码安装,推荐使用以下步骤:

  • 下载源码:访问 Nginx 官方下载页面,选择合适版本(如 1.18.0),下载对应的压缩包(如 nginx-1.18.0.tar.gz)。
  • 解压安装包:tar -zxvf nginx-1.18.0.tar.gz。
  • 安装所需的第三方库:
  • 配置安装:
    • 在 Nginx 根目录下执行:
      ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1i
  • 编译并安装:
    • make
    • sudo make install
  • 2.2 建立软链接

    为了方便操作,可在 /usr/bin/ 目录中创建 Nginx 的启动软链接:

    ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

    启动服务器可用 sudo nginx 命令。

    3. 配置

    Nginx 配置文件通常位于 /usr/local/nginx/conf/nginx.conf,主要包含以下模块:

    3.1 main 模块

    • user:指定 Worker 进程的用户组,默认为 nobody。
    • worker_processes:设置 Worker 进程的数量,根据 CPU 核心数设置 2-4。
    • error_log:指定日志文件,支持多种 loglevel 级别。
    • worker_rlimit_nofile:限制单个进程能打开的文件描述符数目。

    3.2 events 模块

    • 默认使用 epoll 工作模式,支持 Linux 平台。
    • worker_connections:设置单个 Worker 进程的最大连接数,建议设置为 1024 或更高。

    3.3 http 模块

    • 包含常用设置,如 sendfile、tcp_nopush、tcp_nodelay 等。
    • keepalive_timeout:设置客户端连接超时时间。

    3.4 server 模块

    • 定义虚拟主机,设置监听端口、域名、根目录等。
    • 示例:
      server {    listen       80;    server_name  localhost 192.168.12.10 www.eliwang.top;    root /usr/local/nginx/html;    index index.html index.htm;    charset utf-8;}

    3.5 location 模块

    • 定义 URL 匹配规则,支持正则表达式。
    • 示例:
      location / {    root /usr/local/nginx/html;    index index.html index.php;}location /static/ {    alias /var/static/;}

    3.6 upstream 模块

    • 负载均衡设置,支持多种调度算法(如 ip_hash、weight)。
    • 示例:
      upstream myproject {    ip_hash;    server 192.168.123.1:80;    server 192.168.123.2:80 down;    server 192.168.123.3:8080 max_fails=3 fail_timeout=20s;    server 192.168.123.4:8080;}

    4. 反向代理

    4.1 proxy_pass

    • 将请求转发到指定服务器:
      proxy_pass http://127.0.0.1:8000;
    • 可结合负载均衡使用:
      proxy_pass http://myproject;

    4.2 proxy_redirect

    • 重定向处理,避免客户端出现循环请求。
    • 示例:
      proxy_redirect / /newlocation;

    4.3 其他反向代理选项

    • proxy_method:改变请求方法(如 GET 转为 POST)。
    • proxy_hide_header:隐藏特定 HTTP 头。
    • proxy_pass_header:允许转发特定 HTTP 头。
    • proxy_pass_request_body:控制请求体转发。

    5. 负载均衡

    5.1 upstream 块

    • 定义上游服务器集合:
      upstream my.net {    server 192.168.1.100:80 max_fails=1 fail_timeout=300s;    server 192.168.1.101:80 max_fails=1 fail_timeout=300s;}
    • 使用 ip_hash 算法:
      upstream my.net {    ip_hash;    server 192.168.1.100:80;    server 192.168.1.101:80 down;}

    5.2 负载均衡策略

    • weight:轮询权重分配。
    • max_fails:设置失败次数阈值。
    • fail_timeout:失败后等待时间。

    6. 高级应用

    • 缓存: 使用 proxy_cache 模块。
    • 压缩: 配置 gzip 模块。
    • SSL: 配置 SSL 模块,支持 HTTPS。
    • 访问控制: 使用 limit_req_zone 控制访问频率。

    通过以上配置,Nginx 能够成为高效的反向代理、负载均衡服务器,适用于多种场景,包括 Web 服务、视频流媒体、静态资源托管等。

    转载地址:http://sjduz.baihongyu.com/

    你可能感兴趣的文章
    Python块键盘/鼠标输入
    查看>>
    python在使用HTMLTestRunner时,报告为空,错误提示<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf_8'>...
    查看>>
    python在gpu上运行_【python】python开启GPU加速
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在def函数中使用for循环
    查看>>
    Python在Conda环境中,但在Windows虚拟环境中没有激活
    查看>>
    python系列【仅供参考】:python pip 错误 ModuleNotFoundError: No module named pip._internal 解决办法
    查看>>
    python图像条状状噪声,使用PYTHON PIL从验证码图像中删除背景嘈杂的线条
    查看>>
    Python图像处理:从内存加载jpeg
    查看>>
    python固定后缀(名物化词汇)词频统计:抽取+统计+可视化
    查看>>
    python商品评论数据采集与分析可视化系统 Flask框架 requests爬虫 NLP情感分析 毕业设计 源码
    查看>>
    python商品数据分析可视化系统(带爬虫)京东销售数据分析 计算机毕业设计 源码下载
    查看>>
    python商品库存管理系统 django框架 商品网站 MySQL数据库 源码下载 计算机毕业设计
    查看>>
    Python哪个版本最稳定好用2023.10.19
    查看>>
    Python和黑客技术的渊源
    查看>>
    Python和RF编写接口自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>