Nginx 简介、使用
Nginx
简介
Nginx是一款高性能的开源Web服务器和反向代理服务器,由Igor Sysoev开发。它被广泛用于构建可扩展的、高性能的网站和应用程序。Nginx的设计目标是处理大量并发连接,提供高性能的静态文件服务,以及作为反向代理服务器来分发请求。
特点
Nginx具有以下主要特点:
-
高性能:Nginx采用事件驱动的异步架构,通过非阻塞I/O模型处理连接,能够同时处理大量并发连接,具有出色的性能表现。
-
轻量级:Nginx的代码精简,占用系统资源较少,启动速度快。这使得Nginx适用于资源有限的环境或嵌入式设备。
-
反向代理:Nginx可以作为反向代理服务器,接收客户端的请求,并将请求转发给后端的多个服务器。它可以实现负载均衡、缓存、SSL终止等功能。
-
静态文件服务:Nginx能够直接提供静态文件的服务,无需将请求转发给后端应用程序,从而减轻了动态请求的负载。
-
动态模块:Nginx支持动态模块的加载和扩展。这使得开发者可以根据需求,添加自定义的功能模块,以满足特定的需求。
Nginx配置文件
Nginx的主要配置文件是nginx.conf
,位于Nginx安装目录下的conf
文件夹中。配置文件采用简单的文本格式,使用#
作为注释符号。
配置文件中的重要部分包括:
http
块:定义HTTP服务相关的配置,包括全局配置、虚拟主机配置和HTTP请求处理配置。server
块:定义虚拟主机(server)的配置,包括监听端口、域名绑定、SSL证书配置等。location
块:定义请求的匹配规则和相应的处理方式,可以用于处理不同的URL路径。
下面是nginx.conf
中常见的参数及其说明:
worker_processes
该参数指定Nginx的工作进程数量。通常设置为CPU核心数的倍数,以充分利用服务器的资源。
worker_processes 4; # 设置为4个工作进程
events
该块用于配置Nginx的事件模块,包括连接数和工作进程模型。
events {
worker_connections 1024; # 设置每个工作进程的最大连接数
}
http
该块包含了HTTP服务相关的配置。
http {
# 全局配置
# 虚拟主机配置
# HTTP请求处理配置
}
全局配置
全局配置包含了一些全局的设置,例如日志文件路径、MIME类型等。
http {
# ...
# 全局配置
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
sendfile on;
tcp_nopush on;
# ...
}
虚拟主机配置
虚拟主机配置用于定义不同的服务器块(server block),每个服务器块可以监听不同的端口或域名,并具有独立的配置。
http {
# ...
# 虚拟主机配置
server {
listen 80; # 监听80端口
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}
server {
listen 443 ssl; # 监听443端口,并启用SSL
server_name example.com;
ssl_certificate /path/to/certificate.crt; # SSL证书路径
ssl_certificate_key /path/to/private_key.key; # SSL私钥路径
location / {
root /usr/share/nginx/html;
index index.html;
}
# ...
}
# ...
}
HTTP请求处理配置
该部分用于配置HTTP请求的处理方式,例如请求匹配规则、反向代理、负载均衡等。
http {
# ...
# HTTP请求处理配置
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /api {
proxy_pass http://backend-api; # 反向代理到后端API服务器
}
location /static {
alias /var/www/static; # 配置静态文件目录
}
# ...
}
# ...
}
- 感谢你赐予我前进的力量