Nginx 配置指南
Nginx是一款高性能的开源Web服务器和反向代理服务器,以其高并发处理能力、低资源消耗和灵活的配置系统而闻名,本文将详细介绍如何配置Nginx,涵盖从基础到高级的各个方面,包括安装、基本配置、虚拟主机设置、负载均衡、HTTPS配置等。

一、Nginx 简介
Nginx(engine x)是一个高性能的HTTP服务器和反向代理服务器,它以其高并发处理能力、低内存占用和灵活的配置系统被广泛应用于各种网站和应用中,Nginx不仅能够提供静态和动态内容,还能有效地进行负载均衡和SSL终止。
二、安装 Nginx
1. 使用包管理器安装(以Ubuntu为例)
sudo apt update sudo apt install nginx
2. 使用源码编译安装
wget http://nginx.org/download/nginx<version>.tar.gz tar zxvf nginx<version>.tar.gz cd nginx<version> ./configure make sudo make install
三、基本配置
Nginx的主要配置文件是nginx.conf,通常位于/etc/nginx/或/usr/local/nginx/conf/目录下,以下是一个简单的配置示例:
全局配置
user wwwdata;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events块
events {
worker_connections 1024;
}
http块
http {
include /etc/nginx/mime.types;
default_type application/octetstream;
# log格式定义
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;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
# include mime.types文件
include /etc/nginx/mime.types;
default_type application/octetstream;
# include所有配置文件
include /etc/nginx/conf.d/*.conf;
# 配置一个基本的server块
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /usr/share/nginx/html;
# 配置index文件
index index.html index.htm;
# 错误页配置
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# 静态文件位置
location / {
try_files $uri $uri/ =404;
}
}
}四、虚拟主机配置
通过在nginx.conf中添加多个server块,可以配置多个虚拟主机,每个server块可以监听不同的端口或IP地址,以下是一个虚拟主机配置的示例:
server {
listen 80;
server_name example.com;
location / {
root /var/www/example;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/example;
}
}五、负载均衡配置
Nginx支持多种负载均衡策略,如轮询、加权轮询和IP哈希等,以下是一个使用轮询策略的负载均衡配置示例:

http {
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
}
server {
listen 80;
server_name loadbalancer.example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header XRealIP $remote_addr;
proxy_set_header XForwardedFor $proxy_add_x_forwarded_for;
proxy_set_header XForwardedProto $scheme;
}
}
}六、SSL/TLS 配置
为了使网站支持HTTPS,需要在Nginx中配置SSL证书,需要购买或生成SSL证书,并将其放置在服务器上,以下是一个HTTPS配置示例:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/html;
index index.html index.htm;
}
}七、高级配置与优化
1. Gzip 压缩
启用Gzip压缩可以减少传输的数据量,提高网页加载速度,在http块中添加以下配置:
http {
gzip on;
gzip_types text/plain application/xml text/css application/javascript;
gzip_min_length 1000;
gzip_proxied expired nocache nostore private auth;
gzip_disable "MSIE [16]\.";
}2. 缓存控制
通过设置缓存头,可以控制浏览器和中间代理的缓存行为,缓存静态文件30天:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}3. 访问控制

可以使用allow和deny指令限制特定IP地址的访问:
location /admin {
allow 192.168.1.0/24;
deny all;
}八、重启与重新加载配置
每次修改配置文件后,需要重启或重新加载Nginx以使更改生效:
sudo systemctl restart nginx or sudo nginx s reload
九、常见排错方法
检查配置文件语法:使用nginx t命令检查配置文件是否有语法错误。
查看日志文件:检查Nginx的错误日志(默认在/var/log/nginx/error.log)和访问日志(默认在/var/log/nginx/access.log),找出问题所在。
权限问题:确保Nginx有权限读取所需的文件和目录。
