极简配置Nginx服务器

CentOS 7 从零搭建Nginx服务器极简指南

nginx作为当今火爆的、高性能的http及反向代理服务,已在很多场景下必不可少。本文分析到Nginx服务运行的完整流程,包含极简配置文件和关键参数详解。

一、Nginx极简安装

1.1 添加官方源并安装

# 安装Nginx官方源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装Nginx
yum install -y nginx

# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx

# 查看状态(active表示正常)
systemctl status nginx

1.2 防火墙配置

# 开放80端口(HTTP)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

# 验证:浏览器访问 http://服务器IP,应看到Nginx欢迎页

1.3 SELinux设置(推荐禁用)

# 临时禁用
setenforce 0

# 永久禁用
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

二、极简Nginx配置示例

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

user nginx;                     # 运行用户
worker_processes auto;          # 自动根据CPU核心数设置
error_log /var/log/nginx/error.log warn;  # 错误日志
pid /var/run/nginx.pid;         # PID文件

events {
    worker_connections 1024;    # 每个worker的最大连接数
    use epoll;                  # Linux高性能事件模型
}

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;       # 长连接超时时间

    # 虚拟主机配置
    server {
        listen 80;              # 监听端口
        server_name localhost;  # 域名或IP
        
        root /usr/share/nginx/html;  # 网站根目录
        index index.html index.htm;  # 默认首页
        
        location / {
            try_files $uri $uri/ =404;  # 静态文件查找规则
        }
    }
}

2.2 验证配置并重启

# 检查配置语法
nginx -t

# 重载配置(不影响运行)
nginx -s reload

三、常见配置项详解

3.1 核心性能配置

配置项 说明 推荐值
worker_processes worker进程数,通常等于CPU核心数 auto4
worker_connections 每个worker的最大连接数 10242048
use epoll Linux下最佳事件驱动模型 epoll
sendfile on 开启零拷贝传输,提升静态文件性能 on
keepalive_timeout HTTP长连接保持时间 65s

3.2 静态文件服务配置

location /static {
    root /data/www;         # 文件存放路径
    expires 7d;             # 缓存7天
    gzip on;                # 开启gzip压缩
    gzip_types text/plain text/css application/json;  # 压缩类型
}

参数解释:

  • root: 指定文件根目录,URL路径会追加到root后
  • expires: 设置浏览器缓存时间
  • gzip: 压缩传输,减少带宽占用(通常可节省50%-70%)

3.3 反向代理配置

server {
    listen 80;
    server_name api.example.com;
    
    location / {
        proxy_pass http://127.0.0.1:8080;  # 后端服务地址
        proxy_set_header Host $host;       # 传递原始Host头
        proxy_set_header X-Real-IP $remote_addr;  # 传递真实客户端IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 75s;
        proxy_read_timeout 400s;
    }
}

关键header说明:

  • X-Real-IP: 后端服务器获取真实客户端IP
  • X-Forwarded-For: 记录完整代理链路IP
  • Host: 确保后端服务识别原始域名

3.4 负载均衡配置

# 定义后端服务器池
upstream backend {
    # 负载均衡策略:ip_hash/least_conn/weight
    server 192.168.1.101:8080 weight=3;  # 权重3
    server 192.168.1.102:8080 weight=2;  # 权重2
    server 192.168.1.103:8080 backup;    # 备份服务器
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;  # 使用upstream名称
    }
}

负载均衡策略:

  • 轮询(默认): 平均分配请求
  • weight: 加权轮询,权重越高分配越多
  • ip_hash: 同一IP固定到同一后端(保持会话)
  • least_conn: 优先分配给连接数最少的后端
  • backup: 其他服务器宕机时才启用

四、验证与排错

4.1 服务检查命令

# 检查Nginx是否运行
systemctl status nginx
netstat -tlnp | grep 80

# 查看访问日志
tail -f /var/log/nginx/access.log

# 查看错误日志
tail -f /var/log/nginx/error.log

# 测试配置文件
nginx -t

4.2 常见问题

问题 原因 解决方案
无法访问Nginx 防火墙/SELinux拦截 开放80端口,禁用SELinux
403 Forbidden 文件权限不足 chown -R nginx:nginx /网站目录
502 Bad Gateway 后端服务不可用 检查proxy_pass地址和端口
配置不生效 未重载配置 执行 nginx -s reload

通过以上步骤,就可以在CentOS 7上完成Nginx的从零搭建和极简配置。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容