React18+TS+Vite 从0自定义组件库实战复杂项目(完结)

104 阅读2分钟

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 路径的处理方式。
  1. 主配置块

主配置块中的设置影响 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 类型

  1. HTTP 配置块

HTTP 配置块用于设置 HTTP 协议相关的参数及全局 HTTP 配置。

3.1 常见设置

http {

include /etc/nginx/mime.types; # 包含 MIME 类型

default_type application/octet-stream; # 默认 MIME 类型

log_format main 'remoteaddrremote_addr - remote_user [timelocal]"time_local] "request" '

'statusstatus body_bytes_sent "$http_referer" '

'"httpuseragent""http_user_agent" "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; # 包含额外配置

}

  1. Server 配置块

Server 配置块用于设置虚拟主机或服务器的参数。

4.1 常见设置

server {

listen 80; # 监听端口

server_name example.com; # 服务器名称

root /var/www/html; # 网站根目录

index index.html index.htm; # 默认首页文件

location / {

try_files uriuri 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 错误页面

}

  1. 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

}

  1. 反向代理和负载均衡

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 定义的服务器

}

}

  1. 安全配置

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; # 拒绝其他所有访问

}

}

  1. 性能优化

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

}

  1. 日志管理

9.1 自定义日志格式

log_format main 'remoteaddrremote_addr - remote_user [timelocal]"time_local] "request" '

'statusstatus body_bytes_sent "$http_referer" '

'"httpuseragent""http_user_agent" "http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

9.2 日志轮转

Nginx 通常与系统日志轮转工具(如 logrotate)一起使用来管理日志文件的大小和轮换。

  1. 常见问题排查

10.1 配置文件语法检查

bash

nginx -t

10.2 查看 Nginx 错误日志

bash

tail -f /var/log/nginx/error.log

总结

通过对 Nginx 配置的详细讲解,你可以了解其配置文件的基本结构、各种配置块的功能、如何进行高级配置以及如何优化 Nginx 的性能。掌握这些知识将帮助你更有效地管理和优化你的 Nginx 服务器。