Nginx

1. Nginx 简介

Nginx 是一款高性能的 Web 服务器、反向代理服务器及电子邮件代理服务器,以高并发、低内存占用著称。支持模块化扩展,常用于负载均衡、静态资源托管等场景。


2. 安装与部署

2.1 编译安装

# 下载源码
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
cd nginx-1.25.3

# 编译安装
./configure --prefix=/usr/local/nginx 
make && make install

# 启动
/usr/local/nginx/sbin/nginx

2.2 包管理器安装(Ubuntu)

sudo apt update
sudo apt install nginx

3. 基础配置

3.1 配置文件结构

主配置文件:/etc/nginx/nginx.conf
核心配置块:

events { ... }     # 连接处理参数
http { ... }       # HTTP 全局配置
server { ... }     # 虚拟主机配置
location { ... }   # 请求路由规则

3.2 静态资源托管

server {
    listen 80;
    server_name example.com;
    
    location /images/ {
        root /data/static;
        autoindex on;  # 允许目录浏览
    }
}

3.3 支持直接浏览 Markdown 文件

修改 mime.types 文件,添加:

nginx
text/plain  md;
重启 Nginx 后,访问 .md 文件将以文本形式展示(需浏览器插件渲染)。

4. 核心功能

4.1 反向代理

server {
    listen 80;
    server_name api.example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
    }
}

upstream backend_server {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

4.2 负载均衡

upstream backend {
    least_conn;       # 最少连接算法
    server 10.0.0.1:80 weight=3;
    server 10.0.0.2:80;
    server 10.0.0.3:80 backup;  # 备用服务器
}

5. 高级配置

5.1 编译 Markdown 解析模块

# 安装依赖(如 discount)
git clone https://github.com/Orc/discount
cd discount && ./configure && make install

# 编译 Nginx 时添加模块
./configure --add-module=/path/to/ngx-markdown-module-mdfilter
make && make install

配置示例:

location /docs/ {
    mdfilter on;
    mdfilter_utf8 on;
}

5.2 性能优化

调整 Worker 进程数:

worker_processes auto;
worker_connections 1024;
# 开启 Gzip 压缩:
gzip on;
gzip_types text/plain text/css application/json;

6. 常见问题

  • Q1: 如何实现平滑升级?
kill -s HUP $(cat /var/run/nginx.pid)  # 重载配置
kill -s USR2 $(cat /var/run/nginx.pid) # 升级可执行文件
  • Q2: 如何限制访问频率?
location /api/ {
    limit_req zone=api_limit burst=5;
    proxy_pass http://backend;
}
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

参考资料
1 Nginx + Markdown 博客指南
2 Nginx 反向代理原理
3 图片服务器搭建
4 Nginx 中文手册
5 编译安装与平滑升级
7 Markdown 解析模块

posted @ 2025-02-27 09:34  codeplay的园子  阅读(119)  评论(0)    收藏  举报