Nginx 基础入门
概述
Nginx 是高性能 HTTP 和反向代理服务器,以事件驱动架构著称,单机可支持数万并发连接。
安装
# Ubuntu/Debian
apt-get install nginx
# CentOS/RHEL
yum install nginx
# Docker
docker run -d -p 80:80 --name nginx nginx
# 常用命令
nginx -t # 测试配置文件语法
nginx -s reload # 热重载配置
nginx -s stop # 停止
配置文件结构
# 全局块
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
# events 块
events {
worker_connections 1024;
use epoll;
}
# http 块
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# server 块(虚拟主机)
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
# location 块
location / {
try_files $uri $uri/ =404;
}
location /api/ {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
反向代理
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
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_connect_timeout 30s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
负载均衡
轮询(默认)
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
location /api/ {
proxy_pass http://backend;
}
}
权重
upstream backend {
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=1;
}
IP Hash(会话保持)
upstream backend {
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
最小连接
upstream backend {
least_conn;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
静态资源服务
server {
listen 80;
server_name static.example.com;
root /var/www/static;
# 缓存控制
location ~* \.(jpg|png|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# Gzip 压缩
gzip on;
gzip_types text/css application/javascript application/json;
gzip_min_length 256;
}