本指南将帮助您快速上手 Nginx,了解其基本概念和配置方法。
Nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。
如果尚未安装 Nginx,请参考:
# Linux/macOS
sudo nginx
# 或使用 systemd
sudo systemctl start nginx
# Windows
nginx.exe
# 检查进程
ps aux | grep nginx
# 或使用 curl
curl http://localhost
在浏览器中访问 http://localhost,应该看到 "Welcome to nginx!" 页面。
# 启动
nginx
# 停止
nginx -s stop
# 优雅退出
nginx -s quit
# 重新加载配置
nginx -s reload
# 重新打开日志
nginx -s reopen
# 测试配置
nginx -t
# 查看版本
nginx -v
# 查看编译信息
nginx -V
默认位置:
/etc/nginx/nginx.conf/usr/local/etc/nginx/nginx.confconf/nginx.confuser nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
| 块 | 说明 |
|---|---|
main | 全局配置 |
events | 事件处理配置 |
http | HTTP 服务器配置 |
server | 虚拟主机配置 |
location | URL 匹配配置 |
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
server {
listen 80;
server_name example.com www.example.com;
location / {
root /var/www/example.com;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.example.com;
location / {
root /var/www/blog;
index index.html index.htm;
}
}
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
server backend3.example.com:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
http {
gzip on;
gzip_min_length 1000;
gzip_types text/plain text/css application/json application/javascript;
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
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 warn;
| 级别 | 说明 |
|---|---|
debug | 调试信息 |
info | 一般信息 |
notice | 通知信息 |
warn | 警告信息 |
error | 错误信息 |
crit | 严重错误 |
alert | 需要立即处理 |
emerg | 系统不可用 |
user nginx;
worker_processes auto; # 自动检测 CPU 核心数
events {
worker_connections 2048;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
http {
client_body_buffer_size 128k;
client_max_body_size 10m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
output_buffers 1 32k;
postpone_output 1460;
}
http {
server_tokens off;
}
server {
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
}
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
limit_req zone=one burst=5;
}
}
# 错误日志
sudo tail -f /var/log/nginx/error.log
# 访问日志
sudo tail -f /var/log/nginx/access.log
sudo nginx -t
sudo netstat -tlnp | grep :80
# 或
sudo ss -tlnp | grep :80
ps aux | grep nginx