所有请求发送至源站,不缓存任何文件
location / {
proxy_pass http://y.moe.ms;
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_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_no_cache 1;
proxy_cache_bypass 1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
解释:
1. location / {
• 这一行指定了 Nginx 的位置块(location block),表示匹配所有 URI 路径。也就是说,这段配置适用于所有访问该 Nginx 服务器的请求。
2. proxy_pass http://y.moe.ms;
• proxy_pass 指令用来指定将请求代理转发到的后端服务器地址。在这里,所有收到的请求将被代理转发到 http://y.moe.ms 这个地址。
3. proxy_set_header Host $host;
• proxy_set_header 指令用于设置 HTTP 请求头。这里设置了一个 Host 头,使用 $host 变量,将客户端请求中的原始主机头信息传递给后端服务器。
4. proxy_set_header X-Real-IP $remote_addr;
• 设置 X-Real-IP 头,将客户端的真实 IP 地址传递给后端服务器。$remote_addr 是 Nginx 内置变量,代表客户端的 IP 地址。
5. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
• X-Forwarded-For 头用于指示原始客户端 IP 地址,如果请求经过多层代理,会追加到已有的 X-Forwarded-For 头中。
6. proxy_set_header X-Forwarded-Proto $scheme;
• 设置 X-Forwarded-Proto 头,传递客户端请求使用的协议(http 或 https),使用 $scheme 变量获取。
7. proxy_set_header X-Forwarded-Host $host;
• 设置 X-Forwarded-Host 头,传递原始的主机头信息给后端服务器。
8. proxy_set_header X-Forwarded-Port $server_port;
• 设置 X-Forwarded-Port 头,传递客户端请求的端口号给后端服务器。
9. proxy_no_cache 1;
• 禁止缓存代理的响应。
10. proxy_cache_bypass 1;
• 禁止使用缓存来响应请求。
11. proxy_http_version 1.1;
• 设置使用 HTTP 1.1 版本协议进行代理转发。
12. proxy_set_header Upgrade $http_upgrade;
• 设置 Upgrade 头,用于支持 WebSocket 代理,传递客户端的 Upgrade 请求头。
13. proxy_set_header Connection "upgrade";
• 设置 Connection 头为 “upgrade”,支持 WebSocket 连接升级。
缓存所有文件
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
# ...
location / {
proxy_pass http://yuan.moe.ms;
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_cache my_cache;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 404 1m;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_lock on;
}
解释:
1. proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off; • 这行配置定义了缓存路径和相关参数: • /path/to/cache 是缓存文件存放的路径(自己自定义)。 • levels=1:2 定义了缓存目录层级结构。 • keys_zone=my_cache:10m 定义了一个名为 my_cache 的共享内存区域,大小为10MB,用于存储缓存键和元数据。 • max_size=1g 指定了缓存最大容量为1GB。 • inactive=60m 定义了缓存项在60分钟内未被访问即视为过期。 • use_temp_path=off 禁用了临时文件目录,即不使用默认的系统临时路径。
-——
2. location / { ... }
• 这里是nginx的 location 块,location 指令用来匹配 URI,这里匹配所有请求的根路径 /。
• proxy_pass http://yuan.moe.ms; 将请求代理到 http://yuan.moe.ms。
• proxy_set_header 设置了一些HTTP请求头,如 Host、X-Real-IP、X-Forwarded-For、X-Forwarded-Proto,将客户端的真实IP和协议传递给后端服务器。
3. proxy_cache my_cache;
• 启用了名为 my_cache 的缓存区域,这是之前定义的共享内存区域。
4. proxy_cache_valid 200 302 1h;
• 指定了对于响应码为200和302的响应,缓存有效期为1小时。
5. proxy_cache_valid 404 1m;
• 指定了对于响应码为404的响应,缓存有效期为1分钟。
6. proxy_cache_revalidate on;
• 启用了缓存重新验证机制,当缓存过期时,nginx会向后端服务器发起条件性GET请求来检查资源是否仍然有效。
7. proxy_cache_min_uses 1;
• 设置了至少访问1次后才会缓存该响应。
8. proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
• 定义了在响应错误、超时或者后端服务器返回特定错误码(500、502、503、504)时,允许使用过期的缓存作为响应。
9. proxy_cache_background_update on;
• 启用了后台缓存更新,即在后台异步更新过期的缓存。
10. proxy_cache_lock on;
• 启用了缓存锁定,确保同时只有一个请求可以更新缓存。
缓存与不缓存如何使用?
举例1:如果你的源站全是静态资源(图片,下载站等),那么就可以选择缓存所有文件的反代方式
举例2:如果你的源站是WordPress博客,那么就要结合使用缓存与不缓存
示例:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server
{
listen 80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
listen [::]:80;
server_name moe.ms *.moe.ms;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/moe;
location / {
proxy_pass http://y.moe.ms;
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_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_no_cache 1;
proxy_cache_bypass 1;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /wp-content/uploads/ {
proxy_pass http://yuan.moe.ms/wp-content/uploads/;
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_cache my_cache;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 404 1m;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_lock on;
}
示例中不缓存情况下反代了全站,缓存情况下反代了/wp-content/uploads/目录下的所有文件,因为WordPress中你的图片全都存放在这个文件夹下,而图片又是静态文件
以此类推还可以反代其他路径(实际上AWS的cloudfront原理也类似)
对于宝塔用户,配置文件最底部的一些代码要删除,否则会报错(如下图圈出来的都删了)

只需要删除反代机这里的代码,源站不用
为啥不用宝塔自带的反代?因为宝塔的反代是最基础的,傻瓜式的,几乎没有优化。
如何使用 Amazon CloudFront 加速您的 WordPress 站点 | AWS 初创公司博客

上面的简化架构描述了 WordPress 的通用架构,其中静态内容存储在 AWS S3 中,WordPress 运行在 EC2、Lightsail 或其他托管设施上。WordPress 默认将所有内容存储在 Web 服务器本地。但是,有几个插件可以很容易地将静态内容移动到 S3,一个示例就是 W3 Total Cache。这里的建议与您的网站是否在 S3 中存储静态内容相关,无论如何,您的网站都能得到加速。
分发点、源站和行为
首先,我将简要回顾一些术语,确保我们对内容的理解一致。具有 DNS 终端节点的 CloudFront 配置称为分发点。一个网站的所有配置设置均可配置为使用一个分发点,但有些内容可能具有不同的可缓存属性,例如图片等,以及为查看器定制且动态生成的内容(这类内容不应缓存)。 WordPress 将内容拆分成下表所述的文件夹结构。 我们可以使用适当的设置来配置 CloudFront,以通过缓存行为提供每类内容,允许请求 URL(通常按文件扩展名或路径前缀分组)应用适当的缓存配置。
即使是相对简单的网站也可以从不同的位置提供内容。CloudFront 将这些单独的位置称为源站。源站可以是 Amazon S3 存储桶,也可以是 HTTP 终端节点。您的 HTTP 服务器可以托管在 AWS 或任何面向互联网的 HTTP 系统上。在上图中,S3 和 WordPress 服务器将在您的分发点设置中配置为单独的源站。
loc论坛反代案例
一个小学的网站,练习反代发现始终无法成功。
网站地址如下fna.northerneducationtrust.org
需要UK IP访问。如果是UK IP,访问十分正常,没有验证等。
https://hostloc.com/thread-1329431-1-3.html
我的VPS选用的UK IP,用这个IP代理可以访问该网站。
location / {
proxy_pass https://fna.northerneducationtrust.org;
proxy_redirect off;
proxy_set_header Host fna.northerneducationtrust.org;
proxy_set_header Accept-Encoding '';
client_max_body_size 10m;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_hide_header Alt-Svc;
proxy_hide_header Cf-Cache-Status;
proxy_hide_header Report-To;
proxy_hide_header Nel;
proxy_hide_header Cf-Ray;
proxy_hide_header Vary;
proxy_hide_header X-protocol;
proxy_hide_header Strict-Transport-Security;
proxy_hide_header X-Frame-Options;
proxy_hide_header X-Content-Type-Options;
proxy_hide_header X-XSS-Protection;
proxy_ssl_server_name on;
sub_filter 'fna.northerneducationtrust.org' '你的域名';
sub_filter_once off;
sub_filter_types text/javascript application/json application/ld+json application/xml;
}
毛桃博客






评论前必须登录!
注册