Skip to content
GitHub

nginx

nginx 是一个 Web 服务器,它支持 HTTP、HTTPS、SPDY、SPDY/3、QUIC、WebSockets、SSE、SSE/2、SSE/3、SSE/4、SSE/5、SSE/6、SSE/7、SSE/8、SSE/9、SSE/10、SSE/11、SSE/12、SSE/13、SSE/

  • 正向代理: 客户端配置正向代理, 通过代理服务器将请求转发到服务器(可隐藏客户端信息)
  • 反向代理: 在服务端配置反向代理, 通过代理服务器接收客户端请求(可隐藏服务端信息)
  • 负载均衡: 反向代理时, 单个代理服务对应多个后端服务, 根据算法转发请求
  • 动静分离: 将静态资源(nginx)和动态资源(后端)分离, 以提高性能

nginx 官网

安装包安装

nginx 是由 C 编写, 需要使用相关依赖编译器编译

 $ apt install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel -y
 $ tar -xvf nginx-1.25.3.tar.gz
 $ cd nginx-1.25.3
 $ ./configure
 $ make && make install
 >

包管理工具安装

 $ apt install nginx
 $ systemctl start nginx
 >

docker 镜像安装

 $ docker pull nginx
 $ docker run -d -p 80:80 -p 443:443 --name nginx nginx
 >

nginx 配置文件: /etc/nginx/nginx.conf

将服务器指定路径映射到 nginx 端口

http {
    server {
        listen       80;
        server_name  localhost;
        client_max_body_size 1024M;

        # 默认location
        location / {
            root   /usr/local/;
            index  index.html index.htm;
        }
    }
}

http: 服务配置, 可以定义多个 server 块 listen: 服务器监听的端口 server_name: 服务器名称, 可以是域名或 IP 地址 location: 服务器路径, / 表示任意路径 root: 服务器路径, 用于指定静态文件的路径 index: 服务器路径, 用于指定静态文件的索引文件

http {
    server {
        listen       80;
        server_name  localhost;
        client_max_body_size 1024M;

        location / {
            proxy_pass http://127.0.0.1:8080;
        }
    }
}

upstream backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

http {
    server {
        listen       80;
        server_name  localhost;
        client_max_body_size 1024M;
        
        location / {
            proxy_pass http://backend;
        }
    }
    }
}

负载均衡策略

  • round_robin: 默认, 依次分配请求
  • ip_hash: 根据客户端 IP 地址分配请求
  • weighted: 根据权重分配请求