人生就是由众多的细节组成的
正因为是个细节,所以常被人所淡忘

Nginx反向代理配置 加速您的 WordPress 站点

所有请求发送至源站,不缓存任何文件

    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原理也类似)

对于宝塔用户,配置文件最底部的一些代码要删除,否则会报错(如下图圈出来的都删了)

2657208551

只需要删除反代机这里的代码,源站不用

为啥不用宝塔自带的反代?因为宝塔的反代是最基础的,傻瓜式的,几乎没有优化。

如何使用 Amazon CloudFront 加速您的 WordPress 站点 | AWS 初创公司博客

1-1024x576-1

上面的简化架构描述了 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;
        }

赞(1) 打赏
未经允许不得转载:毛桃博客 » Nginx反向代理配置

评论 抢沙发

评论前必须登录!

 

实践是学习的最佳途径

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

了解更多看平潭

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册