如何在 Linux 上安装 Nginx 1.24.0

简介

本教程将指导您如何在 linux 系统上安装 Nginx 1.24.0。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它以其高性能、稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。Nginx通常被用作Web服务器、负载均衡器、API网关和HTTP缓存。

前置要求

  • Linux 操作系统
  • 稳定的网络连接
  • 管理员权限(用于执行sudo命令)
  • 至少512MB的RAM
  • 至少200MB的磁盘空间
  • 具有sudo权限的用户账户

安装方法

使用包管理器安装

使用Linux发行版的包管理器安装Nginx是最简单的方法。

1. 更新包列表

首先更新包列表:

sudo apt update

这里使用apt作为例子,适用于Ubuntu和Debian。其他发行版可能使用不同的包管理器。

2. 安装Nginx

使用包管理器安装Nginx:

sudo apt install nginx

3. 启动Nginx服务

安装完成后,启动Nginx服务:

sudo systemctl start nginx

4. 设置开机自启

设置Nginx在系统启动时自动启动:

sudo systemctl enable nginx

使用Nginx官方存储库安装

使用Nginx官方存储库可以获取最新版本的Nginx。

1. 安装必要的包

首先安装一些必要的包:

sudo apt install curl gnupg2 ca-certificates lsb-release

2. 添加Nginx签名密钥

导入Nginx官方签名密钥:

curl https://nginx.org/keys/nginx_signing.key | sudo apt-key add -

3. 添加Nginx存储库

添加Nginx官方存储库:

echo "deb https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

4. 更新包列表

更新包列表:

sudo apt update

5. 安装Nginx

安装Nginx:

sudo apt install nginx

6. 启动Nginx服务

启动Nginx服务:

sudo systemctl start nginx

7. 设置开机自启

设置Nginx在系统启动时自动启动:

sudo systemctl enable nginx

从源代码编译安装

从源代码编译安装Nginx可以自定义编译选项和模块。

1. 安装依赖

安装编译Nginx所需的依赖:

sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

2. 下载Nginx源代码

下载Nginx源代码:

wget https://nginx.org/download/nginx-1.24.0.tar.gz

3. 解压源代码

解压下载的源代码:

tar -zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0

4. 配置构建

配置构建选项:

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module

您可以根据需要添加或移除模块。运行./configure --help查看所有可用选项。

5. 编译和安装

编译和安装Nginx:

make
sudo make install

6. 创建系统服务

创建Nginx系统服务文件:

sudo vi /etc/systemd/system/nginx.service

在编辑器中添加以下内容: [Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target

7. 重新加载系统服务

重新加载系统服务配置:

sudo systemctl daemon-reload

8. 启动Nginx服务

启动Nginx服务:

sudo systemctl start nginx

9. 设置开机自启

设置Nginx在系统启动时自动启动:

sudo systemctl enable nginx

验证安装

1. 检查Nginx状态

验证Nginx服务是否正在运行:

Windows: tasklist | findstr nginx
Mac: brew services info nginx
Linux: sudo systemctl status nginx

2. 检查Nginx版本

检查安装的Nginx版本:

nginx -v
nginx version: nginx/1.24.0

3. 测试Nginx配置

测试Nginx配置文件的语法:

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4. 访问默认网页

使用浏览器访问http://localhost,或者使用curl命令:

curl http://localhost

如果Nginx正常工作,您应该能看到默认的欢迎页面。

基本使用示例

基本命令

Nginx的基本命令操作:

# 启动Nginx
nginx

# 停止Nginx
nginx -s stop

# 重新加载配置
nginx -s reload

# 测试配置文件
nginx -t

这些是控制Nginx服务器的基本命令。在Windows中,您需要进入Nginx安装目录执行这些命令。在Linux和macOS中,如果Nginx安装在系统路径中,可以直接执行。

配置静态网站

配置Nginx作为静态文件服务器:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html;

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

这个配置示例展示了如何设置Nginx服务器来提供位于/var/www/html目录中的静态文件。server_name指定了域名,root指定了文档根目录,index指定了默认索引文件。

配置反向代理

配置Nginx作为反向代理:

server {
    listen 80;
    server_name example.com;

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

这个示例展示了如何将Nginx配置为反向代理,将请求转发到运行在localhost:3000的应用服务器(如Node.js应用)。proxy_set_header指令设置了一些常用的HTTP头信息。

配置负载均衡

配置Nginx进行简单的负载均衡:

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

server {
    listen 80;
    server_name example.com;

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

这个配置示例展示了如何使用Nginx进行负载均衡,将请求分发到多个后端服务器。upstream指令定义了一组服务器,可以设置权重(weight)来控制流量分配。

配置SSL/TLS

配置Nginx启用HTTPS:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    ssl_protocols TLSv1.2 TLSv1.3;

    location / {
        root /var/www/html;
        index index.html;
    }
}

这个示例展示了如何配置Nginx以支持HTTPS。ssl_certificate和ssl_certificate_key指令指定了SSL证书和私钥的路径,ssl_protocols指定了支持的TLS协议版本。

常见问题

问题:nginx command not found

解决方案:确保软件已正确安装并添加到系统PATH中。可能需要重启终端或系统。

问题:安装过程中遇到权限错误

解决方案:确保您有管理员权限。在Windows上以管理员身份运行命令提示符,在Mac/Linux上使用sudo。

问题:Nginx服务无法启动

解决方案:检查Nginx配置是否有语法错误,以及所需端口是否被占用。

sudo systemctl start nginx

问题:配置无法生效

解决方案:检查配置文件是否有语法错误,然后重新加载Nginx配置。

sudo nginx -t && sudo nginx -s reload

问题:权限问题

解决方案:确保Nginx有权访问其配置文件、日志目录和静态文件。

sudo chown -R nginx:nginx /var/www/html
sudo chmod -R 755 /var/www/html

使用技巧

使用include指令将配置拆分成多个文件,便于管理。例如:include /etc/nginx/conf.d/*.conf;

为了提高安全性,禁用不需要的HTTP方法:if ($request_method !~ ^(GET|HEAD|POST)$) { return 444; }

设置适当的缓冲区大小以优化性能:client_body_buffer_size 10K; client_header_buffer_size 1k;

启用gzip压缩以减少传输数据量:gzip on; gzip_types text/plain text/css application/json application/javascript;

使用缓存控制头优化静态内容的缓存:add_header Cache-Control "public, max-age=31536000";

定期备份您的Nginx配置文件。

使用HTTP/2来提高性能:listen 443 ssl http2;

设置适当的worker进程数(通常设置为CPU核心数):worker_processes auto;

使用try_files指令简化URL重写规则:try_files $uri $uri/ /index.php?$args;

使用limit_req和limit_conn模块限制请求速率和连接数,防止DDoS攻击。

相关资源

总结

恭喜!您已经成功安装了Nginx 1.24.0,并了解了基本的使用方法。Nginx是一个功能强大且灵活的Web服务器,可以根据您的需求进行广泛的配置。随着您对Nginx的深入学习,您将能够利用它的高性能特性来优化您的Web应用程序、配置复杂的反向代理规则、实现负载均衡,以及利用其强大的模块系统扩展功能。建议您继续学习Nginx的配置语法和最佳实践,以充分利用这个出色的服务器软件。