Nginx的使用
目录
1.安装Nginx
# 安装sudo apt update && sudo apt install nginx -y# 测试which nginx# 应该会输出类似/usr/sbin/nginx的内容2.创建站点配置文件
sudo vim /etc/nginx/sites-available/example.com# 示例(也可以使用vi或者nano)sudo vim /etc/nginx/sites-available/example.com配置文件的内容示例:
# =============================================# Nginx 站点配置示例 - example.com# 适用于静态网站或作为反向代理的基础模板# =============================================
# 定义一个服务器块(一个虚拟主机)server { # ----- 监听端口 ----- # 监听 IPv4 地址的 80 端口(HTTP 默认端口) listen 80; # 监听 IPv6 地址的 80 端口(支持 IPv6 访问) listen [::]:80;
# ----- 域名设置 ----- # 指定该服务器块处理的域名(支持多个,用空格分隔) server_name example.com www.example.com;
# ----- 文档根目录 ----- # 设置网站文件的存放路径(存放 HTML、图片、PHP 等) root /var/www/example.com/html;
# ----- 默认首页文件 ----- # 当请求以 / 结尾时,按顺序查找这些文件作为默认页面 index index.html index.htm index.nginx-debian.html;
# ----- 日志配置 ----- # 访问日志:记录所有客户端请求(格式可自定义,此处使用默认 combined) access_log /var/log/nginx/example.com_access.log; # 错误日志:记录错误信息(级别从 debug 到 crit,此处为默认 warn) error_log /var/log/nginx/example.com_error.log;
# ----- 根路径处理(核心 location)----- location / { # try_files 按顺序检查文件是否存在: # $uri - 请求的 URI 对应的文件(如 /about.html) # $uri/ - 如果请求以 / 结尾,尝试作为目录处理(并查找 index) # =404 - 以上都不存在则返回 404 错误 try_files $uri $uri/ =404; }}3.启用站点配置
# 在.../sites-enabled/目录下创建同名链接文件example.com指向.../sites-available/example.comsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/# Nginx 默认会加载 /etc/nginx/sites-enabled/ 目录下所有 .conf 文件或普通文件。通过在此目录创建软链接,Nginx 就能读取到 example.com 的配置。# 输出示例:# lrwxrwxrwx 1 root root 34 Apr 8 20:00 example.com -> /etc/nginx/sites-available/example.com# 或是无输出
# 删除默认站点的软连接(可选)sudo rm -f /etc/nginx/sites-enabled/default# 避免冲突:默认站点通常监听 80 端口,且 server_name 为 _(捕获所有未匹配的域名),如果不删除,它会与你的 example.com 竞争处理请求,可能导致你的域名访问失败或出现默认欢迎页。4.测试配置语法
# 测试 Nginx 配置文件的语法是否正确。它不会启动或重载 Nginx,只做静态检查。sudo nginx -t# 成功示例# nginx: configuration file /etc/nginx/nginx.conf test is successful工作原理: 1.Nginx 读取主配置文件 /etc/nginx/nginx.conf(其中通常会 include 其他目录如 sites-enabled/*)。 2.解析所有 include 的文件,构建完整的配置树。 3.检查语法错误(如缺少分号、大括号不匹配、指令拼写错误)和语义错误(如 listen 端口冲突、引用的文件或目录不存在)。 4.输出测试结果。
5.重载 Nginx 服务
# 平滑重载 Nginx 服务,在不中断现有连接的情况下应用新的配置。sudo systemctl reload nginx# 成功则无输出(静默成功)
# 查看状态systemctl status nginx6.配置HTTPS(SSL证书) —可选
Certbot 客户端 是 Let’s Encrypt 证书颁发机构(CA)的官方自动化工具,用于申请、续期、撤销 SSL/TLS 证书,并能自动配置 Web 服务器(如 Nginx、Apache)以启用 HTTPS。
# 安装Certbot 客户端sudo apt install certbot python3-certbot-nginx -y
# 为域名 example.com 和 www.example.com 申请 Let's Encrypt 证书,并自动修改 Nginx 配置以启用 HTTPS(包括证书路径配置和 HTTP 到 HTTPS 的重定向)。sudo certbot --nginx -d example.com -d www.example.com执行后,证书及相关文件保存在:
/etc/letsencrypt/live/lehuang.xyz/├── cert.pem # 服务器证书├── chain.pem # 中间证书链├── fullchain.pem # cert.pem + chain.pem(Nginx 通常使用这个)├── privkey.pem # 私钥(权限 600,仅 root 可读)
Nginx 配置中引用的是 fullchain.pem 和 privkey.pem。