React18+TS+Vite 从0自定义组件库实战复杂项目(完结)
React18+TS+Vite 从0自定义组件库实战复杂项目(完结)
获取ZY↑↑方打开链接↑↑
Nginx 是一个高性能的 HTTP 和反向代理服务器,也可作为负载均衡器和邮件代理。了解 Nginx 配置有助于优化服务器性能、提高安全性并简化管理。以下是 Nginx 配置的详细讲解,涵盖了基础配置、高级配置、模块和性能调优等方面。
1. 基本概念
1.1 配置文件结构
Nginx 配置文件主要分为三个部分:
- 主配置块 (
main): 包含全局设置。 - HTTP 配置块 (
http): 配置 HTTP 相关的设置和全局参数。 - Server 配置块 (
server): 配置虚拟主机或服务器块。 - Location 配置块 (
location): 配置特定 URL 路径的处理方式。
- 主配置块
主配置块中的设置影响 Nginx 的全局行为。以下是一些常见配置项:
user www-data; # 指定 Nginx 工作进程的用户和组
worker_processes auto; # 自动设置工作进程数(通常是 CPU 核心数)
pid /run/nginx.pid; # 指定 PID 文件位置
include /etc/nginx/mime.types; # 包含 MIME 类型文件
default_type application/octet-stream; # 默认 MIME 类型
- HTTP 配置块
HTTP 配置块用于设置 HTTP 协议相关的参数及全局 HTTP 配置。
3.1 常见设置
http {
include /etc/nginx/mime.types; # 包含 MIME 类型
default_type application/octet-stream; # 默认 MIME 类型
log_format main 'remote_user [request" '
'body_bytes_sent "$http_referer" '
'"http_x_forwarded_for"'; # 日志格式
access_log /var/log/nginx/access.log main; # 访问日志
error_log /var/log/nginx/error.log warn; # 错误日志
sendfile on; # 启用高效文件传输
tcp_nopush on; # 适用于大型文件的 TCP 优化
tcp_nodelay on; # 避免延迟
keepalive_timeout 65; # 保持连接超时设置
include /etc/nginx/conf.d/*.conf; # 包含额外配置
}
- Server 配置块
Server 配置块用于设置虚拟主机或服务器的参数。
4.1 常见设置
server {
listen 80; # 监听端口
server_name example.com; # 服务器名称
root /var/www/html; # 网站根目录
index index.html index.htm; # 默认首页文件
location / {
try_files uri/ =404; # 尝试文件或目录,如果不存在返回 404
}
location /images/ {
alias /var/www/images/; # 映射 /images/ 路径到 /var/www/images/
}
error_page 404 /404.html; # 自定义 404 错误页面
error_page 500 502 503 504 /50x.html; # 自定义 50x 错误页面
}
- Location 配置块
Location 配置块用于匹配请求的 URL 路径,并定义如何处理这些请求。
5.1 匹配方式
精确匹配:location = /exact 仅匹配 /exact。
前缀匹配:location /prefix 匹配所有以 /prefix 开头的 URL。
正则匹配:location ~* .(jpg|jpeg|png)$ 使用正则表达式匹配 .jpg、.jpeg 和 .png 文件。
5.2 示例
location / {
root /var/www/html;
index index.html index.htm;
}
location /images/ {
alias /var/www/images/;
}
location ~* .(jpg|jpeg|png)$ {
expires 30d; # 设置浏览器缓存时间
}
location /api/ {
proxy_pass http://backend_server; # 反向代理
proxy_set_header Host $host; # 设置代理请求头
proxy_set_header X-Real-IP $remote_addr; # 设置真实 IP
}
- 反向代理和负载均衡
6.1 反向代理
location /api/ {
proxy_pass http://backend_server; # 转发请求到后端服务器
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
6.2 负载均衡
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http://backend; # 负载均衡到 upstream 定义的服务器
}
}
- 安全配置
7.1 SSL 配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'AESGCM:!aNULL:!MD5';
}
7.2 防火墙和访问控制
server {
location /admin/ {
allow 192.168.1.0/24; # 允许特定 IP 段访问
deny all; # 拒绝其他所有访问
}
}
- 性能优化
8.1 缓存设置
location /static/ {
expires 30d; # 设置静态文件缓存时间
add_header Cache-Control "public";
}
8.2 连接数限制
http {
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_conn conn_limit_per_ip 10; # 每个 IP 最大连接数为 10
}
- 日志管理
9.1 自定义日志格式
log_format main 'remote_user [request" '
'body_bytes_sent "$http_referer" '
'"http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
9.2 日志轮转
Nginx 通常与系统日志轮转工具(如 logrotate)一起使用来管理日志文件的大小和轮换。
- 常见问题排查
10.1 配置文件语法检查
bash
nginx -t
10.2 查看 Nginx 错误日志
bash
tail -f /var/log/nginx/error.log
总结
通过对 Nginx 配置的详细讲解,你可以了解其配置文件的基本结构、各种配置块的功能、如何进行高级配置以及如何优化 Nginx 的性能。掌握这些知识将帮助你更有效地管理和优化你的 Nginx 服务器。