Nginx 是一款免费的、开源的、高性能的 HTTP 服务器和反向代理,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx 以其稳定性,丰富的功能集,简单的配置文件和低系统资源消耗而闻名。
Nginx 的主要特点:
- 高并发连接:Nginx 能够处理大量并发连接,这是其设计时考虑的主要特点。
- 作为反向代理:Nginx 通常用作反向代理,用于分发客户端的请求到后端服务器,并将服务器的响应返回给客户端。
- 负载均衡:Nginx 可以将输入请求均衡分配到多个后端服务器,从而提高整体系统的性能和可用性。
- 高效的静态文件服务:Nginx 作为网页服务器提供静态页面服务,效率高于传统的服务器。
- 易于配置:Nginx 的配置文件以简单易读而闻名。
- 可扩展性:Nginx 的模块化结构使它具有很高的扩展性。
基本的 Nginx 配置
下面我们将创建一个简单的配置文件,以展示如何使用 Nginx 提供静态文件服务。以下是一个 nginx.conf
的配置文件示例:
# 用户运行的工作进程, 通常设置成和CPU核数一样
user nginx;
# nginx服务的工作进程数
worker_processes auto;
# 全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log warn;
# 进程文件
pid /var/run/nginx.pid;
# 工作模式与连接数上限
events {
# 可以同时支持的最大连接数
worker_connections 1024;
}
# http服务器
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;
# 防止网络阻塞
tcp_nopush on;
# 连接超时时间
keepalive_timeout 65;
# gzip压缩开关及相关参数设置
gzip on;
gzip_disable "msie6";
# 包含额外的配置文件
include /etc/nginx/conf.d/*.conf;
# 虚拟主机的配置
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自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root /var/www/virtual/big.server.com/htdocs;
expires 30d;
}
# 对 "/api" 开头的请求进行反向代理
location ~ ^/api/ {
proxy_pass http://backend_server;
# 后端服务器地址
}
}
}
每一行的注释标明了其配置的目的和作用。注意,这只是一个非常基本的 Nginx 配置文件的例子,实际配置时依据系统和业务需求,可能会有更多的配置项。
使用 Nginx
要在实际环境中使用 Nginx,通常的步骤如下:
- 安装 Nginx:可以从官方网站下载或使用包管理器安装。
- 编辑配置文件:根据需要编辑
/etc/nginx/nginx.conf
文件或在该目录下创建新的配置文件。 - 测试配置文件:使用
nginx -t
命令来测试配置文件的语法是否正确。 - 启动/重启 Nginx:配置无误后,使用
service nginx start
或service nginx restart
命令来启动或重启 Nginx 服务。 - 调整防火墙设置:确保服务器的防火墙设置允许 HTTP 和 HTTPS(如果使用 SSL/TLS)流量。
实际部署时,您可能还需要考虑 SSL 配置、更复杂的路由规则、安全设置等因素。Nginx 的官方文档提供了非常详细的信息,适用于不同场景下的配置需求。