博客
关于我
Nginx - 反向代理、负载均衡、动静分离、底层原理(案例实战分析)
阅读量:789 次
发布时间:2023-02-15

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

Nginx 安装与配置指南

Nginx 开始

概述

Nginx 是一个高性能的 HTTP 和反向代理服务器,以内存占用少、并发处理能力强著称。官方报告显示,Nginx 可以支持高达 50 000 个并发连接。

正向代理

正向代理是通过配置客户端(如浏览器)代理访问互联网。例如,中国大陆用户无法直接访问谷歌,需在浏览器中配置代理服务器通过其访问目标网站。

反向代理

反向代理是代理服务器接收客户端请求后,转发给真实服务器。客户端无需额外配置,只需将请求发送至反向代理服务器,代理服务器会隐藏真实服务器 IP 地址。例如,客户端可通过 9090 端口的反向代理访问 8080 端口的 Tomcat 服务器。

安装(非 Docker)

官方下载

下载 Nginx 源码包并解压:

tar -zxvf nginx-1.26.1.tar.gz

系统依赖安装

安装必要工具和库:

yum -y install gcc gcc-c++ autoconf automake makeyum -y install openssl openssl-devel

配置与编译

进入源码目录,执行以下命令进行基本配置:

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

观察 make 文件后,输入以下命令编译并安装:

make && make install

启动

进入安装目录并启动 Nginx:

cd /usr/local/nginx/sbin./nginx

访问服务器 IP 地址即可使用,默认端口为 80。

环境变量配置

准备工作

进入 /etc 目录,找到 profile 文件并添加以下内容:

export NGINX_HOME=/usr/local/nginxexport PATH=${NGINX_HOME}/bin:${NGINX_HOME}/sbin:$PATH

刷新环境变量:

source /etc/profile

验证配置:

cd /usr/local/nginx/sbin./nginx -v

常用命令

查看版本

nginx -v

停止服务

nginx -s stop

启动服务

nginx

重新加载配置

nginx -s reload

配置文件概述

配置文件位置

/usr/local/nginx/conf/nginx.conf

默认配置文件内容

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;        location / {            root html;            index index.html index.htm;        }        error_page 500 502 503 504 /50x.html;        location = /50x.html {            root html;        }    }}

配置文件结构

  • 全局块:设置影响服务器整体运行的配置,如 worker_processes
  • events 块:设置最大连接数 worker_connections
  • http 块:配置 HTTP 服务器,包含 server 块和 location 块。
  • location 路径匹配方式

    匹配方式

    • = /path:严格匹配路径。
    • ~ /pattern:带正则表达式匹配,区分大小写。
    • ~* /pattern:带正则表达式匹配,不区分大小写。
    • ^~ /prefix:优先匹配以 /prefix 开头的路径,不带正则表达式。

    反向代理配置

    实现效果

    • 浏览器输入 env-base:9000/aaa 跳转至 127.0.0.1:8080
    • 输入 env-base:9000/bbb 跳转至 127.0.0.1:8081

    准备工作

    • 使用 Docker 启动两个 Tomcat 服务器,分别监听 8080 和 8081 端口。
    • 创建 aaabbb 目录,并在每个目录下添加 a.htmlb.html 文件。

    配置示例

    server {    listen 9000;    server_name env-base;    location ~ /aaa/ {        proxy_pass http://127.0.0.1:8080;    }    location ~ /bbb/ {        proxy_pass http://127.0.0.1:8081;    }}

    负载均衡

    准备工作

    • 在两个 Tomcat 服务器上创建 ccc 目录,并添加 c.html 文件。

    配置示例

    upstream group1 {    server 127.0.0.1:8080 weight=1;    server 127.0.0.1:8081 weight=1;}server {    listen 80;    server_name localhost;    default_type text/html;    location /ccc/ {        proxy_pass group1;    }}

    实现效果

    • 浏览器输入 http://env-base:9000/ccc/c.html,请求会被轮询分配至 8080 或 8081 端口。

    动静分离

    准备工作

    • /data/image/ 目录下添加 1.png 图片。
    • /data/www/ 目录下添加 index.html 页面。

    配置示例

    location /www/ {    root /root/data/;    autoindex on;}

    403 错误处理

    常见原因

    • 静态资源权限不足。
    • 操作系统 SELinux 设置为启用。

    解决方法

  • 修改 Nginx 配置:

    user nobody;
  • 调整文件权限:

    chmod 755 -R /usr/local/nginx/html
  • 关闭 SELinux:

    setenforce disabled

    持久关闭:

    echo "SELINUX=disabled" > /etc/sysconfig/selinux
  • master - worker 模式

    优点

    • 支持热部署。
    • 进程隔离,单个进程故障不会影响整体运行。

    工作原理

    • master 进程接收请求并分发给 worker 进程。
    • worker 进程独立处理请求,支持静态资源直接返回,动态资源通过反向代理。

    worker 数量设置

    示例配置

    worker_processes 4;worker_cpu_affinity 0001 0010 0100 1000;

    优化建议

    • worker 数量应与 CPU 核心数相等。
    • 避免设置过多或过少,影响系统性能。

    请求连接数

    静态资源

    • 最大并发数:worker_connections * worker_processes / 2
    • 示例:1024 * 4 / 2 = 2048

    动态资源

    • 最大并发数:worker_connections * worker_processes / 4
    • 示例:1024 * 4 / 4 = 1024

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

    你可能感兴趣的文章