Nginx 常用配置汇总:从入门到实战

服务器 服务器产品
Nginx 是一款功能强大的 Web 服务器和反向代理服务器,通过合理的配置可以显著提高系统的性能和稳定性。本文介绍了 Nginx 的常用功能和配置方法,包括反向代理、负载均衡、Web 缓存等,并提供了详细的配置示例和常用命令,希望能帮助读者更好地掌握 Nginx 的配置技巧。

引言

Nginx 是一款高性能的 HTTP 和反向代理服务器,同时也是 IMAP/POP3/SMTP 代理服务器和通用的 TCP/UDP 代理服务器。它以其高并发、低资源消耗、易于扩展和配置灵活等特点,在现代互联网架构中占据重要地位。本文将详细介绍 Nginx 的常用配置,帮助读者从入门到实战掌握 Nginx 的配置技巧。

一、Nginx 简介

Nginx 由俄罗斯人 Igor Sysoev 开发,开源且轻量级。它的设计目标是高效处理高并发连接,支持高达 50,000 个并发连接。Nginx 还支持热部署,可以在不中断服务的情况下更新配置或升级软件。

二、Nginx 常用功能

1. 正向代理与反向代理

  • 正向代理:代理客户端访问无法直接访问的服务器资源。
  • 反向代理:代理服务器处理来自客户端的请求,并将其转发给内部网络上的服务器,然后将结果返回给客户端。反向代理常用于负载均衡和隐藏真实服务器地址。

2. 负载均衡

Nginx 支持多种负载均衡策略,包括轮询、加权轮询、IP hash 等,可以根据实际业务需求选择合适的策略。

3. Web 缓存

Nginx 可以对静态内容进行缓存,减少对后端服务器的请求,提高系统性能。同时,Nginx 也支持 FastCGI 缓存,适用于动态内容的缓存。

三、Nginx 配置文件结构

Nginx 的配置文件通常位于 /etc/nginx/ 目录下,主配置文件名为 nginx.conf。配置文件以区块(block)的形式组织,主要包括全局块、events 块、http 块等。

1. 全局块

主要设置影响 Nginx 服务器整体运行的配置指令,如运行用户、进程数、错误日志等。

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

2. events 块

影响 Nginx 服务器与用户的网络连接,如工作进程的最大连接数、事件驱动模型等。

events {
    worker_connections 1024;
    use epoll;
}

3. http 块

配置代理、缓存、日志、第三方模块等,是服务器配置中最频繁的部分。

http {
    include /etc/nginx/mime.types;
    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;
    
    server {
        listen 80;
        server_name localhost;
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
}

四、常用配置示例

1. 反向代理配置

反向代理配置主要通过 proxy_pass 指令实现,将请求转发到后端服务器。

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

upstream backend_server {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080 backup;
}

2. 负载均衡配置

负载均衡配置通过 upstream 指令定义一组后端服务器,并通过反向代理将请求分发到这些服务器。

upstream myapp1 {
    server backend1.example.com weight=5;
    server backend2.example.com;
    server backend3.example.com down;
}

server {
    listen 80;

    location / {
        proxy_pass http://myapp1;
    }
}

3. 日志配置

Nginx 支持详细的访问日志和错误日志记录,便于问题排查和性能分析。

http {
    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;
    error_log /var/log/nginx/error.log;
}

4. 缓存配置

开启缓存可以显著提高静态资源的访问速度。

http {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
                     inactive=60m use_temp_path=off;

    server {
        location /static/ {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_valid 200 302 60m;
            proxy_cache_valid 404 1m;
        }
    }
}

五、Nginx 常用命令

  • 查看 Nginx 版本:nginx -v
  • 检查配置文件语法:nginx -t
  • 启动 Nginx:systemctl start nginx 或 /usr/sbin/nginx
  • 停止 Nginx:systemctl stop nginx 或 /usr/sbin/nginx -s stop
  • 重启 Nginx:systemctl restart nginx 或 /usr/sbin/nginx -s reload

六、总结

Nginx 是一款功能强大的 Web 服务器和反向代理服务器,通过合理的配置可以显著提高系统的性能和稳定性。本文介绍了 Nginx 的常用功能和配置方法,包括反向代理、负载均衡、Web 缓存等,并提供了详细的配置示例和常用命令,希望能帮助读者更好地掌握 Nginx 的配置技巧。

责任编辑:武晓燕 来源: 程序员编程日记
相关推荐

2021-11-29 14:18:05

Nuxt3静态Nuxt2

2013-06-06 13:42:48

OSPF入门配置

2022-09-30 15:46:26

Babel编译器插件

2021-01-14 07:15:19

NginxWeb服务器

2024-01-10 16:46:13

Kubernetes容器

2017-06-26 09:15:39

SQL数据库基础

2012-02-29 00:49:06

Linux学习

2022-06-10 08:17:52

HashMap链表红黑树

2022-10-20 08:02:29

ELFRTOSSymbol

2010-02-06 15:31:18

ibmdwAndroid

2009-07-22 14:55:16

ibmdwAndroid

2021-02-21 22:53:01

CanvasHTML5JavaScript

2017-05-09 08:48:44

机器学习

2019-07-02 14:17:18

API网关网关流量

2016-12-08 22:39:40

Android

2021-09-01 22:58:22

Canvas标签

2023-11-08 08:32:16

2020-04-28 22:12:30

Nginx正向代理反向代理

2024-07-03 10:09:29

2024-02-26 08:52:20

Python传递函数参数参数传递类型
点赞
收藏

51CTO技术栈公众号