如何配置 Nginx:从入门到进阶

server/2024/10/19 8:00:20/

Nginx 是一款高性能的开源 Web 服务器,也可以用作反向代理、负载均衡器和 HTTP 缓存。由于其轻量级和高效的设计,Nginx 被广泛用于处理高并发连接场景。在这篇博客中,我将介绍 Nginx 的基本配置,并分享一些常见的实用配置技巧,帮助你快速上手。

1. Nginx 基础配置

Nginx 的核心配置文件通常是 nginx.conf,它通常位于 /etc/nginx/nginx.conf 路径下(对于 Linux 系统),或者在 Windows 下位于 Nginx 的安装目录。以下是一个基本的 Nginx 配置结构示例:

nginx">user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;# 日志配置access_log /var/log/nginx/access.log;# 发送文件优化sendfile on;tcp_nopush on;# 连接超时keepalive_timeout 65;# 压缩传输gzip on;# 虚拟主机配置server {listen 80;server_name example.com;location / {root /var/www/html;index index.html;}# 错误页面配置error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
}

配置结构解析:

  • worker_processes:Nginx 使用的工作进程数,可以根据服务器 CPU 数量自动设置(auto)。
  • events:定义工作进程可以处理的最大连接数。
  • http:HTTP 服务的全局配置块,包括日志、文件传输和虚拟主机等配置。
  • server:虚拟主机配置,用于定义不同的域名和端口的请求处理方式。
  • location:定义 URL 路径的匹配规则。

2. Nginx 虚拟主机配置

虚拟主机允许我们在同一台服务器上处理多个站点。Nginx 的虚拟主机配置主要通过 server 块来实现。

基于域名的虚拟主机配置
假设我们有两个站点,分别为 example.com 和 test.com,可以通过以下方式配置 Nginx:

nginx">server {listen 80;server_name example.com www.example.com;location / {root /var/www/example;index index.html;}
}server {listen 80;server_name test.com www.test.com;location / {root /var/www/test;index index.html;}
}

基于端口的虚拟主机配置
如果你希望基于不同的端口来处理多个站点,例如 http://example.com:8080 和 http://example.com:8081,可以这样配置:

nginx">server {listen 8080;server_name example.com;location / {root /var/www/example;index index.html;}
}server {listen 8081;server_name example.com;location / {root /var/www/another_example;index index.html;}
}

3. Nginx 反向代理配置

Nginx 常用于反向代理,它能够将客户端的请求转发到后端服务器上,并将响应返回给客户端。这在负载均衡和应用分离的场景中非常常见。

以下是一个简单的反向代理配置,将请求转发给运行在 localhost:3000 的后端服务:

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;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}
}

反向代理设置解析

  • proxy_pass:指定后端服务地址。
  • proxy_set_header:用于设置请求头信息,确保后端应用能获取客户端的真实 IP 等信息。

4. Nginx HTTPS 配置(SSL/TLS)

为了提升网站安全性,我们通常使用 HTTPS。Nginx 支持使用 SSL 证书来加密流量,以下是基本的 HTTPS 配置步骤:

获取 SSL 证书
你可以通过 Let’s Encrypt 获取免费的 SSL 证书,或者从其他 CA 购买。获取证书后,将 .crt(证书文件)和 .key(私钥文件)保存在服务器上。

配置 HTTPS 虚拟主机
假设证书路径为 /etc/ssl/certs/example.com.crt 和 /etc/ssl/private/example.com.key,你可以这样配置:

nginx">server {listen 443 ssl;server_name example.com;ssl_certificate /etc/ssl/certs/example.com.crt;ssl_certificate_key /etc/ssl/private/example.com.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;location / {root /var/www/html;index index.html;}
}# 重定向 HTTP 到 HTTPS
server {listen 80;server_name example.com;location / {return 301 https://$host$request_uri;}
}

5. 负载均衡配置

Nginx 还可以配置为负载均衡器,将请求分发到多个后端服务器。常见的负载均衡方式包括轮询(默认)、权重和 IP 哈希等。

轮询负载均衡

nginx">upstream backend {server backend1.example.com;server backend2.example.com;
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;}
}

基于权重的负载均衡
你可以为不同的后端服务器设置不同的权重,权重越高的服务器将接收到更多的请求。

nginx">upstream backend {server backend1.example.com weight=3;server backend2.example.com weight=1;
}

IP 哈希负载均衡
使用 IP 哈希将相同 IP 的请求分配到同一个后端服务器上。

nginx">upstream backend {ip_hash;server backend1.example.com;server backend2.example.com;
}

6. 总结

Nginx 作为一个功能强大的 Web 服务器,其配置灵活性和强大的反向代理、负载均衡、HTTPS 支持,使其成为构建高性能 Web 应用的首选。无论你是想运行简单的静态网站,还是构建复杂的微服务架构,Nginx 都能满足你的需求。


http://www.ppmy.cn/server/131506.html

相关文章

记录使用appium+夜神模拟器测试多设备时selenium和appium版本不兼容带来的问题

记录使用appium夜神模拟器测试多设备时selenium和appium版本不兼容带来的问题 好不容易解决了selenium和appium的版本冲突问题(导致:AttributeError: ‘NoneType’ object has no attribute to_capabilities’异常发生) 第二天运行代码发现…

项目总思路

一、模型选择 高性能服务器一般用到的是 Reactor 模型,即事件驱动模型。 1、模型一:单 Reactor 单线程模型 只有一个线程会造成性能瓶颈。 适用场景:客户端少,业务处理快速。 2、模型二:单 Reactor 多线程模型 即…

【数据服务篇】KML卫星波束覆盖数据:区域可视化利器

大纲 1.概述2.文件结构3.覆盖区域详细信息4.应用场景5.使用说明6.数据样例7.结语 1.概述 文件使用 KML(Keyhole Markup Language)格式,用于展示卫星在特定地区的波束覆盖情况,便于在地理信息系统(GIS)中进…

网络安全(黑客技术)2024年三个月自学手册

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…

浏览器访问一个网址的过程

DNS 解析: 浏览器首先会解析出域名,然后查找域名对应的 IP 地址。依次访问浏览器缓存 → 操作系统缓存 → hosts 文件 → 本地 DNS 服务器 → 根域名服务器 → 顶级域名服务器 → 权威 DNS 服务器,直到得到 IP 地址。 建立 TCP 连接&#x…

【工具】HTTrack:网站一键克隆下载,实现离线浏览与备份的利器

什么是 HTTrack? HTTrack 是一款用于复制完整网站的开源工具,它可以从服务器下载整个网站的内容,包括 HTML 文件、图像、样式表、脚本等资源。通过这种方式,你可以在离线状态下浏览网站,就像在线一样。 HTTrack 支持…

Redis 配置小插曲

前言:当今,我们进行后端部署redis时候,总是会遇到各种问题,这不今天就发现了,redis在下载下来的时候,redis.windows.conf,文件中,默认是没有为redis配置密码才被允许进行登录的&…

STM32 通用同步/异步收发器

目录 串行通信基础 串行异步通信数据格式 USART介绍 USART的主要特性 USART的功能 USART的通信时序 USART的中断 串行通信基础 在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。发送者依次逐位发送一串数据信号,按一定的约定规则被接…