为了优化您的网站性能,以下是一份详细的加速器代理配置指南,分步骤进行:
安装和准备
安装Nginx
sudo apt update sudo apt install nginx
安装Varnish
sudo apt install varnish
启动和停止服务
sudo systemctl start nginx sudo systemctl stop varnish sudo systemctl enable nginx sudo systemctl enable varnish
配置Nginx
打开Nginx配置文件
sudo nano /etc/nginx/sites-available/default
修改配置
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://varnish:6081;
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_max_temp_path 8m;
proxy_temp_path /var/cache/nginx/temp;
}
location /static {
alias /var/www/yourproject/static;
expires 12h;
access_log off;
if_modified_since on;
set_header X-Static "1";
}
# 禁用缓存
location / {
proxy_pass http://varnish:6081;
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_max_temp_path 8m;
proxy_temp_path /var/cache/nginx/temp;
# 禁用缓存
proxy_no_cache $upstream_cache_status;
add_header X-Cache-Status $upstream_cache_status;
}
}
保存并退出
Ctrl + O
测试Nginx配置
sudo nginx -t
配置Varnish
打开Varnish配置文件
sudo nano /etc/varnish/default
修改配置
# 代理地址 backend = "http://nginx:80"; # 最大使用温度 max_size = 1024M; # TTL default_ttl = 12h; # TTL策略 use_regex = false; # 超时前置 connect_timeout = 300s; # 读取超时 read_timeout = 120s; # 写超时 write_timeout = 120s; # 最大并发连接数 max_client_conn = 160; # 客户端超时 client_timeout = 600s; # 重新缓存策略 new_backend = "http://varnish:6081"; # 限制IP连接数 client_max_conn = 100;
保存并退出
Ctrl + O
配置缓存策略
创建缓存管理文件
sudo nano /etc/varnish/obj-cache.vcl
添加缓存规则
sub "^(?:(?:[a-zA-Z-9-]+)\.)(?:localhost|example\.com)$" {
# 匿名化处理,避免缓存穿透
set req.http.X-Forwarded-For = "client-ip";
set req.http.X-Forwarded-Proto = "http";
}
sub "^(?:www\.)?example\.com$" {
# 设置缓存策略
set cache.default = 12h;
set cache.max_size = 1024M;
set cache.negative_ttl = 10m;
set cache.use = "least recently used";
if (req.request.method == GET) {
set cache.key = "obj";
}
}
启用缓存
启动Varnish
sudo systemctl start varnish
访问网站测试
curl -I yourdomain.com
进一步优化
Gzip压缩
sudo nano /etc/nginx/sites-available/default
location / {
proxy_pass http://varnish:6081;
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_max_temp_path 8m;
proxy_temp_path /var/cache/nginx/temp;
proxy gzip;
proxy compress;
}
设置缓存控制头
sudo nano /etc/nginx/sites-available/default
location / {
proxy_pass http://varnish:6081;
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_max_temp_path 8m;
proxy_temp_path /var/cache/nginx/temp;
proxy_no_cache $upstream_cache_status;
add_header X-Cache-Status $upstream_cache_status;
add_header ETag "\ief";
add_header Last-Modified "Wed, 01 Jan 197 00:00:01 GMT";
}
管理和监控
清理缓存
sudo varnishadm purge
启用监控
sudo apt install prometheus varnish-prometheus-exporter sudo nano /etc/prometheus/prometheus.yml
global:
scrape_interval: 5s
scrape_configs:
- job: 'varnish'
scrape_interval: 5s
static_configs:
- targets: ['localhost:6081']
labels:
app: varnish
team: web
- job: 'nginx'
scrape_interval: 5s
static_configs:
- targets: ['localhost:80']
labels:
app: nginx
team: web
启动Prometheus
sudo systemctl start prometheus
访问监控界面
http://localhost:909
SSL配置
生成证书
sudo openssl req -x509 -newkey -days 365 -nodes -sha256
配置Nginx SSL
sudo nano /etc/nginx/sites-available/default
server {
listen 443 ssl;
ssl on;
ssl_certificate /path/to/ssl.crt;
ssl_key_file /path/to/ssl.key;
ssl_session_timeout 10m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3;
# 启用HSTS
add_header Strict-Transport-When-Redirecting "on";
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
}
配置Varnish SSL
sudo nano /etc/varnish/default
backend = "https://nginx:443";
注意事项
缓存穿透
- 解决方法:在Varnish配置中添加子域名匹配,设置X-Forwarded-For和X-Forwarded-Proto头。
多域名或子域名访问
- 解决方法:在Varnish中设置隐藏头
X-Forwarded-For: *,避免不同域名的缓存干扰。
高并发优化
- 解决方法:增加Nginx和Varnish的最大连接数,根据实际负载调整。
定期清理缓存
- 解决方法:使用
varnishadm purge定期清理过期缓存,避免内存泄漏。
通过以上步骤,您可以配置并优化加速器代理,提升网站的性能和速度,根据实际需求调整缓存策略和配置参数,以达到最佳效果。









