Nginx是一款高性能的HTTP和反向代理服务器,以其轻量级、稳定性高、配置灵活等优点,被广泛应用于各种场景,如网站、API服务器、负载均衡等。学会Nginx配置,不仅能让你优化网站性能,还能提高你的服务器运维技能。本文将带你从入门到实战,全面掌握Nginx配置。
一、Nginx入门
1.1 Nginx简介
Nginx是一款高性能的Web服务器和反向代理服务器,由俄罗斯程序员Igor Sysoev开发。它支持TCP、HTTP、HTTPS等多种协议,具有高性能、高可靠性、低资源消耗等特点。
1.2 安装Nginx
在Linux系统中,可以使用以下命令安装Nginx:
sudo apt-get update
sudo apt-get install nginx
在Windows系统中,可以从Nginx官网下载安装包,按照提示进行安装。
1.3 Nginx基本配置
Nginx的配置文件位于/etc/nginx/nginx.conf(Linux系统)或nginx.conf(Windows系统)。以下是一个简单的Nginx配置示例:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
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;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
二、Nginx高级配置
2.1 负载均衡
Nginx支持多种负载均衡算法,如轮询、IP哈希、最少连接等。以下是一个简单的负载均衡配置示例:
http {
upstream myapp1 {
server server1.example.com;
server server2.example.com;
server server3.example.com;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myapp1;
}
}
}
2.2 SSL证书配置
Nginx支持HTTPS协议,需要配置SSL证书。以下是一个简单的SSL证书配置示例:
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
2.3 反向代理
Nginx支持反向代理功能,可以将请求转发到后端服务器。以下是一个简单的反向代理配置示例:
server {
listen 80;
server_name localhost;
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
三、Nginx性能优化
3.1 优化配置文件
- 使用高效的数据结构和算法,如
upstream模块中的ip_hash; - 合理配置
worker_processes,使其与CPU核心数相匹配; - 优化日志记录,减少日志文件大小。
3.2 使用缓存
- 开启gzip压缩,减少传输数据量;
- 使用缓存,如
FastCGI缓存、Redis缓存等。
3.3 调整系统参数
- 调整
/etc/sysctl.conf文件中的参数,如net.core.somaxconn、net.ipv4.tcp_max_syn_backlog等; - 使用
ulimit命令限制进程资源。
四、实战案例
以下是一个Nginx配置实战案例,用于优化一个Java Web应用:
- 修改
nginx.conf文件,添加以下内容:
http {
upstream myapp {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myapp;
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;
}
location ~* \.(jpg|jpeg|png|gif|ico)$ {
expires 30d;
add_header Cache-Control "public";
}
location ~* \.(js|css|swf)$ {
expires 1h;
add_header Cache-Control "public";
}
}
}
- 重启Nginx服务:
sudo systemctl restart nginx
通过以上配置,可以实现以下功能:
- 负载均衡:将请求均匀分配到后端服务器;
- 缓存静态资源:减少服务器压力,提高访问速度;
- 优化HTTP缓存:提高页面加载速度。
五、总结
学会Nginx配置,不仅能优化网站性能,还能提高你的服务器运维技能。本文从入门到实战,全面介绍了Nginx配置,包括基本配置、高级配置、性能优化等方面。希望对你有所帮助!
