插件窝 干货文章 linux上nginx安装部署及使用的方法

linux上nginx安装部署及使用的方法

Nginx 配置 server example 550    来源:    2025-04-22

Linux上Nginx安装部署及使用指南

一、Nginx安装方法

1. 使用包管理器安装(推荐)

Ubuntu/Debian系统

sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

CentOS/RHEL系统

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

2. 源码编译安装(适合需要自定义模块的情况)

# 安装依赖
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

# 下载源码
wget http://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 \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-http_stub_status_module

# 编译安装
make
sudo make install

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

二、Nginx基本配置

1. 配置文件结构

  • 主配置文件:/etc/nginx/nginx.conf(包管理器安装)或 /usr/local/nginx/conf/nginx.conf(源码安装)
  • 站点配置文件:通常放在 /etc/nginx/conf.d//etc/nginx/sites-available/

2. 常用配置示例

基本HTTP服务器

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

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

HTTPS服务器配置

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    root /var/www/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

三、Nginx常用操作命令

1. 启动Nginx

sudo systemctl start nginx  # 系统服务方式
/usr/local/nginx/sbin/nginx  # 源码安装直接启动

2. 停止Nginx

sudo systemctl stop nginx
/usr/local/nginx/sbin/nginx -s stop

3. 重新加载配置(不中断服务)

sudo systemctl reload nginx
/usr/local/nginx/sbin/nginx -s reload

4. 测试配置文件语法

sudo nginx -t
/usr/local/nginx/sbin/nginx -t

5. 查看Nginx版本

nginx -v  # 显示版本
nginx -V  # 显示版本和编译参数

四、Nginx常用功能配置

1. 反向代理配置

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

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

2. 负载均衡配置

upstream backend {
    server backend1.example.com weight=5;
    server backend2.example.com;
    server backend3.example.com backup;
}

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

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

3. 静态文件缓存

server {
    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

4. Gzip压缩

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;

五、日志管理

1. 访问日志配置

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 warn;
}

2. 日志轮转

使用logrotate自动管理日志:

# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        /usr/bin/systemctl reload nginx > /dev/null 2>&1 || true
    endscript
}

六、性能调优

1. 工作进程配置

worker_processes auto;  # 自动设置为CPU核心数
worker_rlimit_nofile 100000;  # 每个worker能打开的文件描述符数量

events {
    worker_connections 4096;  # 每个worker的最大连接数
    multi_accept on;  # 一次接受所有新连接
    use epoll;  # Linux高效事件模型
}

2. 缓冲区优化

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 4 4k;

七、安全配置

1. 基本安全设置

server_tokens off;  # 隐藏Nginx版本号

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";

2. 限制访问

# 限制特定IP访问
location /admin {
    allow 192.168.1.0/24;
    deny all;
}

# 限制请求速率
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

server {
    location /api/ {
        limit_req zone=one burst=20 nodelay;
    }
}

八、常见问题解决

1. 403 Forbidden错误

  • 检查文件权限:chmod -R 755 /var/www/html
  • 检查SELinux状态:setenforce 0(临时关闭)或配置正确的安全上下文
  • 确保Nginx用户(通常是www-data或nginx)有访问权限

2. 502 Bad Gateway错误

  • 检查后端服务是否运行
  • 检查代理设置是否正确
  • 查看错误日志:tail -f /var/log/nginx/error.log

3. 性能问题

  • 调整worker_processes和worker_connections
  • 启用keepalive:keepalive_timeout 65;
  • 启用gzip压缩

九、进阶使用

1. 使用Nginx作为TCP/UDP负载均衡器

stream {
    upstream backend {
        server backend1.example.com:12345;
        server backend2.example.com:12345;
    }

    server {
        listen 12345;
        proxy_pass backend;
    }
}

2. 使用Lua脚本扩展功能(OpenResty)

location /hello {
    content_by_lua_block {
        ngx.say("Hello, World!")
    }
}

3. WebSocket代理

location /ws/ {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

通过以上指南,您应该能够在Linux系统上成功安装、配置和使用Nginx。根据实际需求选择适合的安装方式和配置选项。