为了优化您的网站性能,以下是一份详细的加速器代理配置指南,分步骤进行:

安装和准备

安装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 定期清理过期缓存,避免内存泄漏。

通过以上步骤,您可以配置并优化加速器代理,提升网站的性能和速度,根据实际需求调整缓存策略和配置参数,以达到最佳效果。

缓存大小

扫码添加极光VPN官方微信

扫码添加极光VPN官方微信

400-683-9275
扫码添加极光VPN官方微信

扫码添加极光VPN官方微信

网站地图