参考资料

  1. docker安装openwrt详细说明以及案例
  2. alt 是一个轻量级的代理工具,支持多种协议(如 HTTP、SOCKS5),用于网络请求的转发和代理
  3. docker添加官方镜像源详细说明以及案例
  4. Ruby 是一种动态、开源的编程语言
  5. irssi 是一个基于终端的开源 IRC 客户端,支持多服务器连接、可定制界面和脚本扩展。
  6. httpd(Apache HTTP Server)是Apache软件基金会开发的开源Web服务器软件
  7. Scratch 是 MIT 媒体实验室开发的图形化编程语言
  8. BusyBox 是一个集成了多个 Unix 常用工具的轻量级软件

Nginx 简介

Nginx 是一款高性能的开源 Web 服务器、反向代理服务器和负载均衡器,由 Igor Sysoev 开发。它采用事件驱动的异步架构,支持高并发连接,广泛用于静态资源服务、API 网关和动态内容加速。

特点

  1. 高性能:事件驱动模型,支持高并发(单机可处理数万并发连接)。

  2. 低内存消耗:高效的内存管理机制。

  3. 反向代理与负载均衡:支持 HTTP、TCP/UDP 负载均衡。

  4. 热部署:支持不重启服务更新配置或二进制文件。

  5. 模块化设计:支持动态模块加载(如 HTTP/2、gRPC)。

  6. 高扩展性:通过 Lua 脚本(OpenResty)或第三方模块扩展功能。

最新更新内容及时间

  • 最新稳定版:1.25.3(截至 2023 年 10 月)

    • 新增:对 QUIC 和 HTTP/3 的实验性支持。

    • 修复:内存泄漏和 SSL 相关漏洞。

    • 详情见 官方更新日志

镜像下载地址

官网地址

文档地址


Docker 安装示例

# 拉取官方镜像
docker pull nginx:latest

# 运行容器(映射 80 端口)
docker run -d -p 80:80 --name my-nginx nginx

# 挂载自定义配置和静态文件
docker run -d -p 80:80 -v /path/to/nginx.conf:/etc/nginx/nginx.conf -v /path/to/html:/usr/share/nginx/html nginx

YAML 配置示例(适用于 Kubernetes)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-config
          mountPath: /etc/nginx/nginx.conf
          subPath: nginx.conf
      volumes:
      - name: nginx-config
        configMap:
          name: nginx-config

常见错误及解决

  1. 403 Forbidden

    • 原因:权限不足或根目录配置错误。

    • 解决:检查 root 路径权限,确保用户(如 nginx)有读取权限。

  2. 502 Bad Gateway

    • 原因:反向代理的后端服务不可达。

    • 解决:检查 proxy_pass 地址和后端服务状态。

  3. Address already in use

    • 原因:端口被占用。

    • 解决:终止占用端口的进程或修改 Nginx 监听端口。

  4. worker_connections exceed open file resource limit

    • 原因:系统文件描述符限制。

    • 解决:修改 /etc/security/limits.conf,增加 nofile 值。

  5. SSL 证书错误

    • 原因:证书路径或权限问题。

    • 解决:检查 ssl_certificatessl_certificate_key 路径,确保证书文件可读。


配置片段示例

# 反向代理配置
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend-server;
        proxy_set_header Host $host;
    }
}

# 静态文件服务
server {
    listen 80;
    root /var/www/html;
    index index.html;
}