Nginx配置与命令

简介: Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。

Nginx 配置文件基础

  • 全局块(Main Context):配置影响全局的参数,如用户、进程数、日志路径等。

    user  nginx;                # 运行Nginx的用户和组
    worker_processes  auto;     # 工作进程数(通常设为CPU核心数)
    error_log  /var/log/nginx/error.log warn;      # 错误日志路径及级别
    pid        /var/run/nginx.pid;                         # 进程PID文件路径
    
  • Events 块:配置网络连接相关参数。

    events {
         
        worker_connections  1024;   # 单个工作进程的最大并发连接数
        use epoll;                  # 使用高效的事件模型(Linux)
    }
    
  • HTTP 块:定义 HTTP 服务的全局配置,可包含多个 server 块(虚拟主机)。

    http {
         
        include       /etc/nginx/mime.types;       # 包含MIME类型定义文件
        default_type  application/octet-stream; # 默认响应类型
    
        # 日志格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main; # 访问日志路径
    
        sendfile        on;          # 启用高效文件传输模式
        keepalive_timeout  65;       # 客户端长连接超时时间
    
        # 包含其他配置文件(如虚拟主机配置)
        include /etc/nginx/conf.d/*.conf;
    }
    
  • Server 块(虚拟主机):定义单个网站的监听端口、域名、路由规则等。

    server {
         
        listen       80;            # 监听端口
        server_name  example.com;   # 域名或IP
    
        location / {
                         # 路由匹配规则
            root   /usr/share/nginx/html;  # 静态资源根目录
            index  index.html index.htm;   # 默认首页
        }
    
        # 错误页面配置
        error_page  500 502 503 504  /50x.html;
        location = /50x.html {
         
            root   /usr/share/nginx/html;
        }
    }
    

Nginx 常用配置指令

  • 静态资源服务

    location /static/ {
         
        alias /data/static/;    # 路径映射(末尾必须加/)
        expires 30d;            # 设置缓存过期时间
        access_log off;         # 关闭访问日志
    }
    
  • 反向代理

    location /api/ {
         
        proxy_pass http://backend_server;  # 转发到后端服务器
        proxy_set_header Host $host;       # 传递原始请求头
        proxy_set_header X-Real-IP $remote_addr;
    }
    
  • 负载均衡

    upstream backend_server {
         
        server 10.0.0.1:8080 weight=3;  # 权重分配
        server 10.0.0.2:8080;
        server 10.0.0.3:8080 backup;    # 备用服务器
    }
    
    server {
         
        location / {
         
            proxy_pass http://backend_server;
        }
    }
    
  • HTTPS 配置

    server {
         
        listen 443 ssl;
        server_name example.com;
    
        ssl_certificate      /etc/ssl/certs/example.com.crt;  # 证书路径
        ssl_certificate_key  /etc/ssl/private/example.com.key;
    
        ssl_session_cache    shared:SSL:10m;       # SSL会话缓存
        ssl_session_timeout  10m;                 # 会话超时时间
    
        # 安全协议配置
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
    
        location / {
         
            root   /usr/share/nginx/html;
            index  index.html;
        }
    }
    
  • URL重写

    location /old/ {
         
        rewrite ^/old/(.*)$ /new/$1 permanent;  # 永久重定向
    }
    
    # 正则匹配示例
    location ~ ^/user/(\d+) {
         
        rewrite ^/user/(\d+) /profile?id=$1 last;
    }
    

Nginx 常用命令

  • 启动与停止
nginx                     # 启动Nginx
nginx -s stop             # 立即停止
nginx -s quit             # 优雅停止(处理完当前请求后退出)
  • 重载配置
nginx -s reload           # 重新加载配置文件(不中断服务)
nginx -t                  # 测试配置文件语法是否正确
  • 日志管理
# 切割日志(需配合cron定时任务)
mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%Y%m%d).log
nginx -s reopen           # 重新打开日志文件
  • 查看进程与版本
ps aux | grep nginx       # 查看Nginx进程
nginx -v                  # 查看版本
nginx -V                  # 查看编译参数及模块信息
相关文章
|
28天前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
390 87
|
3月前
|
应用服务中间件 nginx
Nginx进程配置指令详解
Nginx进程配置指令主要包括:`worker_processes`设置工作进程数;`worker_cpu_affinity`绑定CPU核心;`worker_rlimit_nofile`设置最大文件描述符数量;`worker_priority`设置进程优先级;`worker_connections`设置最大连接数;`daemon`控制守护进程模式;`master_process`启用主进程模式;`pid`设置PID文件路径;`user`指定用户和组;`error_log`配置错误日志。这些指令在`nginx.conf`中配置,用于优化和控制Nginx的运行行为。
165 10
|
5月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
212 4
|
7月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
368 61
|
7月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
424 60
|
7月前
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
501 60
|
7月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
6月前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
239 5
|
6月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
417 3
|
10月前
|
缓存 运维 应用服务中间件
运维系列.Nginx配置中的高级指令和流程控制
运维系列.Nginx配置中的高级指令和流程控制
503 1