从安装到上线:一份 Nginx 实战指南,让你的 Web 应用稳建安全(一)

在当今数字化时代,Web 应用已成为企业和个人展示信息、提供服务的重要窗口。而要让 Web 

应用稳定、安全地运行,一个高效、可靠的 Web 服务器至关重要。Nginx 凭借其高性能、高并

发、低资源消耗以及强大的功能,成为众多企业和开发者的首选。本文将为你提供一份从安装到

上线的 Nginx 实战指南,帮助你轻松搭建并保障 Web 应用的安全。


一、Nginx 安装准备

(一)系统环境要求


在安装 Nginx 之前,确保你的系统满足以下基本要求:


操作系统‌:Nginx 支持多种操作系统,如 Linux(CentOS、Ubuntu 等)、Windows 和 

macOS。本文以 Linux 系统为例进行讲解。

硬件资源‌:虽然 Nginx 对硬件要求不高,但为了确保良好的性能,建议至少有 1GB 以上

的内存和适量的 CPU 资源。

网络环境‌:确保服务器能够正常访问互联网,以便下载安装包和依赖库。

(二)安装依赖库


Nginx 的编译和运行需要一些依赖库的支持。在 CentOS 系统上,可以使用以下命令安装:


bash

Copy Code

yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel


gcc‌:用于编译源代码。

pcre‌:提供正则表达式支持,Nginx 的配置文件中有大量正则表达式。

zlib‌:用于压缩和解压缩功能,Nginx 支持 gzip 压缩。

openssl‌:提供 SSL/TLS 支持,实现 HTTPS 连接。

二、Nginx 安装

(一)下载 Nginx 安装包


访问 Nginx 官方网站(https://nginx.org/en/download.html),选择适合你的操作系统和

版本的安装包。本文以 Linux 系统为例,使用 wget 命令下载:


bash

Copy Code

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


(二)解压安装包


下载完成后,使用 tar 命令解压:


bash

Copy Code

tar -zxvf nginx-1.20.2.tar.gz


(三)编译和安装


进入解压后的目录,进行配置、编译和安装:


bash

Copy Code

cd nginx-1.20.2

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

make && make install


--prefix=/usr/local/nginx:指定安装目录为 /usr/local/nginx。

--with-http_ssl_module:启用 SSL/TLS 模块,支持 HTTPS。

(四)验证安装


安装完成后,进入 Nginx 安装目录的 sbin 目录,启动 Nginx:


bash

Copy Code

cd /usr/local/nginx/sbin

./nginx



然后,在浏览器中输入服务器的 IP 地址或域名,如果能看到 Nginx 的欢迎页面,说明安装成功。


三、Nginx 基本配置

(一)配置文件结构


Nginx 的主配置文件是 nginx.conf,位于 /usr/local/nginx/conf 目录下。该文件由多个模块组成,包括:


全局块‌:配置影响 Nginx 全局的指令,如 worker_processes(工作进程数)、user(运行用户)等。

events 块‌:配置影响 Nginx 服务器或与用户的网络连接,如 worker_connections(每个工作进程允许的最大连接数)。

http 块‌:配置代理、缓存、日志定义等绝大多数功能和第三方模块的功能,如 server(虚拟主机配置)、location(URL 匹配规则)等。

(二)配置虚拟主机


虚拟主机是在一台服务器上运行多个网站的技术。在 Nginx 中,可以通过配置多个 server 块来实现。


例如,为域名 example.com 和 test.example.com 配置虚拟主机:


nginx

Copy Code

http {

    server {

        listen 80;

        server_name example.com;

        root /var/www/html/example;

        index index.html index.htm;

    }


    server {

        listen 80;

        server_name test.example.com;

        root /var/www/html/test;

        index index.html index.htm;

    }

}


(三)配置反向代理


反向代理是 Nginx 的重要功能之一,可以将客户端的请求转发到内部服务器,并将内部服务器的响应返回给客户端。


例如,将请求转发到本地的 8080 端口:


nginx

Copy Code

location / {

    proxy_pass http://127.0.0.1:8080;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

}


四、Nginx 安全加固

(一)隐藏服务器信息


默认情况下,Nginx 会在响应头中携带服务器信息,这可能会泄露服务器的版本信息,给攻击者提供可乘之机。可以通过以下配置隐藏:


nginx

Copy Code

server_tokens off;


(二)限制访问权限


限制某些 IP 地址或网段的访问,增强安全性:


nginx

Copy Code

location /admin {

    allow 192.168.1.100;

    deny all;

}


(三)启用 HTTPS


使用 SSL/TLS 加密传输数据,防止数据被窃取和篡改。


生成 SSL 证书和私钥:

bash

Copy Code

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /path/to/your/private.key -out /path/to/your/certificate.crt


在 Nginx 配置中启用 HTTPS:

nginx

Copy Code

server {

    listen 443 ssl;

    server_name example.com;


    ssl_certificate /path/to/your/certificate.crt;

    ssl_certificate_key /path/to/your/private.key;


    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 5m;


    ssl_ciphers HIGH:!aNULL:!MD5;

    ssl_prefer_server_ciphers on;


    location / {

        root /var/www/html/example;

        index index.html index.htm;

    }

}


五、Nginx 上线与监控

(一)启动和停止 Nginx


使用以下命令启动、停止和重新加载 Nginx:


bash

Copy Code

# 启动

/usr/local/nginx/sbin/nginx


# 停止

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


# 重新加载配置

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


(二)监控 Nginx 运行状态


可以通过以下方式监控 Nginx 的运行状态:


日志文件‌:Nginx 的访问日志和错误日志位于 /usr/local/nginx/logs 目录下,通过分析日志可以了解服务器的运行情况和潜在问题。

第三方监控工具‌:如 Prometheus、Grafana 等,可以实时监控 Nginx 的性能指标,如请求数量、响应时间、错误率等。

结语


本文详细介绍了从安装到上线的 Nginx 实战指南,涵盖了安装准备、安装过程、基本配置、安全

加固以及上线与监控等方面。通过遵循本指南,你可以轻松搭建一个稳定、安全的 Nginx Web 

服务器,为你的 Web 应用提供强大的支持。在后续的文章中,我们将继续深入探讨 Nginx 的高

级配置和优化技巧,敬请期待。