Linux下如何安装和配置Nginx

发布时间:2022-02-16 14:58:03 作者:小新
来源:亿速云 阅读:139
# Linux下如何安装和配置Nginx

## 1. 前言

Nginx(发音为"engine-x")是一个高性能的HTTP和反向代理服务器,以其稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。它既可以作为Web服务器直接提供静态内容,也可以作为负载均衡器或反向代理服务器使用。

本文将详细介绍在Linux系统下安装和配置Nginx的完整过程,涵盖从基础安装到高级配置的各个方面。

## 2. 安装前的准备

### 2.1 系统要求

Nginx可以在大多数Linux发行版上运行,包括但不限于:
- Ubuntu/Debian
- CentOS/RHEL
- Fedora
- Arch Linux

建议系统满足以下最低要求:
- 1GB RAM(生产环境建议2GB以上)
- 至少10GB可用磁盘空间
- root或具有sudo权限的用户

### 2.2 更新系统

在安装任何新软件之前,建议先更新系统软件包:

```bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

# Fedora
sudo dnf update -y

3. 安装Nginx

3.1 通过包管理器安装

Ubuntu/Debian系统

sudo apt install nginx -y

CentOS/RHEL系统

CentOS/RHEL默认仓库中没有Nginx,需要先添加EPEL仓库:

sudo yum install epel-release -y
sudo yum install nginx -y

Fedora系统

sudo dnf install nginx -y

3.2 从源代码编译安装(可选)

如果需要最新版本或自定义模块,可以选择编译安装:

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

# 下载最新稳定版
wget https://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_realip_module \
            --with-http_stub_status_module

# 编译并安装
make
sudo make install

4. Nginx基础配置

4.1 主要配置文件结构

Nginx的配置文件通常位于以下位置: - /etc/nginx/nginx.conf - 主配置文件 - /etc/nginx/conf.d/ - 额外配置文件目录 - /etc/nginx/sites-available/ - 可用站点配置 - /etc/nginx/sites-enabled/ - 启用的站点配置(通常是符号链接)

4.2 基本配置示例

编辑主配置文件/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
    multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    
    gzip on;
    gzip_disable "msie6";
    
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

4.3 启动和管理Nginx服务

# 启动Nginx
sudo systemctl start nginx

# 设置开机自启
sudo systemctl enable nginx

# 检查状态
sudo systemctl status nginx

# 重新加载配置(不中断服务)
sudo systemctl reload nginx

# 完全重启
sudo systemctl restart nginx

5. 配置虚拟主机

5.1 创建网站目录

sudo mkdir -p /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chmod -R 755 /var/www/example.com

5.2 创建虚拟主机配置文件

/etc/nginx/sites-available/example.com创建文件:

server {
    listen 80;
    listen [::]:80;
    
    server_name example.com www.example.com;
    
    root /var/www/example.com/html;
    index index.html index.htm;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

5.3 启用站点配置

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t  # 测试配置语法
sudo systemctl reload nginx

6. SSL/TLS配置

6.1 使用Let’s Encrypt获取免费证书

# 安装Certbot
sudo apt install certbot python3-certbot-nginx -y

# 获取证书
sudo certbot --nginx -d example.com -d www.example.com

6.2 自动续期配置

# 测试续期
sudo certbot renew --dry-run

# 添加定时任务(每天检查续期)
sudo crontab -e
添加以下行:
0 12 * * * /usr/bin/certbot renew --quiet

7. 性能优化

7.1 调整工作进程

worker_processes auto;  # 自动设置为CPU核心数
worker_rlimit_nofile 100000;

7.2 事件模块优化

events {
    worker_connections 4096;
    multi_accept on;
    use epoll;
}

7.3 HTTP模块优化

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    
    keepalive_timeout 30;
    keepalive_requests 100000;
    
    reset_timedout_connection on;
    client_body_timeout 10;
    send_timeout 2;
    
    open_file_cache max=200000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
}

8. 安全配置

8.1 禁用服务器令牌

server_tokens off;

8.2 安全头设置

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

8.3 限制HTTP方法

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

9. 高级配置

9.1 反向代理配置

location /app/ {
    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;
    proxy_set_header X-Forwarded-Proto $scheme;
}

9.2 负载均衡配置

upstream backend {
    least_conn;
    server backend1.example.com weight=5;
    server backend2.example.com;
    server backend3.example.com;
    
    keepalive 32;
}

server {
    location / {
        proxy_pass http://backend;
        # 其他代理设置...
    }
}

9.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_read_timeout 86400;
}

10. 监控与日志

10.1 访问状态模块

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}

10.2 日志分析

# 查看最频繁的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 20

# 查看HTTP状态码统计
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

11. 常见问题解决

11.1 502 Bad Gateway

可能原因: - 后端服务未运行 - 代理设置错误 - 权限问题

11.2 403 Forbidden

检查: - 文件权限 - SELinux设置 - 目录索引设置

11.3 性能问题排查

# 查看Nginx进程
ps aux | grep nginx

# 检查打开文件限制
ulimit -n

# 网络连接统计
netstat -anp | grep nginx

12. 结论

通过本文的详细指导,您应该已经掌握了在Linux系统上安装和配置Nginx的全过程。从基础安装到高级配置,Nginx提供了丰富的功能来满足各种Web服务需求。建议在生产环境中部署前,充分测试所有配置,并考虑结合防火墙和其他安全措施来增强服务器安全性。

Nginx的强大之处在于其灵活性和高性能,通过不断学习和实践,您可以进一步发掘它的潜力,构建更加强大和可靠的Web服务架构。

附录:常用命令速查表

命令 描述
sudo systemctl start nginx 启动Nginx
sudo systemctl stop nginx 停止Nginx
sudo systemctl restart nginx 重启Nginx
sudo systemctl reload nginx 重载配置
sudo nginx -t 测试配置语法
sudo tail -f /var/log/nginx/error.log 查看错误日志
sudo ss -tulpn | grep nginx 查看Nginx监听端口
sudo du -sh /var/log/nginx/ 查看日志目录大小

”`

注意:本文约3750字,实际字数可能因格式和显示环境略有差异。文章包含了Nginx从安装到配置的完整流程,适合初学者和中级用户参考使用。

推荐阅读:
  1. windows下安装和配置nginx
  2. linux下rsync的安装和配置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux nginx

上一篇:Linux下如何安装ElasticSearch

下一篇:Linux下如何安装Spotify

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》