Nginx(Engine X)是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。由于其高并发处理能力、低内存占用、模块化设计和高可配置性,Nginx被广泛应用于现代互联网架构中。
在大多数Linux发行版中,Nginx可以通过包管理工具直接安装。例如,在Ubuntu上,可以使用以下命令:
sudo apt update
sudo apt install nginx
安装完成后,可以通过以下命令启动Nginx:
sudo systemctl start nginx
Nginx的配置文件通常位于/etc/nginx/nginx.conf
,其结构分为几个主要部分:
以下是一个基本的Nginx配置文件示例:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
Nginx非常擅长处理静态文件,如HTML、CSS、JavaScript、图片等。通过简单的配置,Nginx可以高效地提供静态文件服务:
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
Nginx常用于反向代理,以实现负载均衡、缓存加速、应用隔离等功能。以下是一个简单的反向代理配置:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Nginx支持多种负载均衡策略,如轮询、最少连接等。以下配置示例展示了如何实现简单的轮询负载均衡:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
}
}
}
Nginx支持SSL/TLS加密,可以用于HTTPS网站的配置。以下是一个简单的HTTPS配置示例:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/certificate.key;
location / {
root /var/www/html;
index index.html;
}
}
虽然Nginx本身不处理动态内容,但可以通过FastCGI、uwsgi等协议将请求转发给后端应用服务器(如PHP-FPM、Django等)。以下是一个PHP-FPM的配置示例:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Nginx可以充当缓存服务器,提高网站性能。以下是一个简单的缓存配置示例:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
proxy_cache my_cache;
proxy_pass http://backend;
proxy_cache_bypass $http_cache_control;
}
}
Nginx可以通过各种方式控制访问权限,如IP白名单、黑名单、HTTP基本认证等。以下是一个IP白名单的配置示例:
server {
listen 80;
server_name example.com;
location / {
allow 192.168.1.0/24;
deny all;
root /var/www/html;
index index.html;
}
}
Nginx的功能主要通过模块实现,以下是一些常用模块:
worker_connections
参数。sendfile
指令提高文件传输效率。http {
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}
Nginx作为一种高性能的Web服务器和反向代理服务器,具备许多强大的功能和灵活的配置选项。通过深入理解其配置和功能,合理利用其模块和优化策略,可以极大地提高Web服务的性能和可靠性。在实际应用中,Nginx不仅仅是一个静态文件服务器,更是实现复杂网络架构的关键工具。希望本学习笔记能够帮助你更好地理解和使用Nginx。