宝塔面板中制作师父博客的反向代理

注:以下设置在2022-06-20左右有效,但师父博客经常有新功能和改变,对今后的博客未必有效,仅供参考 如有不如理不如法的地方,请大慈大悲观世音菩萨和护法菩萨原谅。

  1. 在宝塔面板左侧,点击【网站】菜单
  2. 点击【添加站点】按钮,输入用于镜像的域名。然后点击右下角【提交】按钮
  3. 在更新的网站列表里,点击刚才添加的网站,会弹出一个对话框。
  4. (可选,推荐)申请 SSL 证书,使网站可以用 HTTPS 访问。
    不申请的话,配置更复杂些,而且有些严格浏览器里可能不能使用台长博客的【留言板】功能。
    (注意:但是如果要反向代理。宝塔里要先申请 SSL 证书,然后再设置反向代理,否则可能会不成功。)
    在弹出的对话框中,点击左侧【SSL】菜单,然后点击【Let's Encrypt】标签页。
    然后选择刚才的域名,点击【申请】按钮。这样 SSL 证书就申请好了。
  5. 点击左侧点击【反向代理】菜单
  6. 在右侧界面,点击【添加反向代理】按钮
  7. 在弹出窗口中
    1. 【代理名称】随便写,但不要空白
    2. 【目标URL】写 https://lumasterblog.link
      (注意不要写 https://lujunhong2or.com , 这个域名的 cloudfare 限制很重,反向代理会失败)
    3. 【发送域名】会自动填写为 lumasterblog.link
    4. 【内容替换】的两个文本框里填写: lumasterblog.linkbk.xjdh.org (这样,网页里的 lumasterblog.link 会被替换为 bk.xjdh.org
    5. 如果网站没有 SSL 证书,只支持 HTTP,【内容替换】的两个文本框里填写: https://lumasterblog.linkhttp://bk.xjdh.org (这样,网页里的 https://lumasterblog.link 会被替换为 http://bk.xjdh.org
      然后,点击【添加内容替换】,在新出现的两个文本框里分别填写: lumasterblog.linkbk.xjdh.org (这样,网页里的 lumasterblog.link 会被替换为 bk.xjdh.org
    6. 点击【添加内容替换】,在新出现的两个文本框里分别填写: lujunhong2or.combk.xjdh.org
      如果网站没有 SSL 证书,像上一步一样类似处理。
    7. 这里默认没有开启缓存,如果需要可以点击【开启缓存】按钮,缓存时间可以设置为比如 60 分钟。
    8. 填好以后点击右下角的【提交】按钮。
    9. 在反向代理的列表里会出现新的一栏,点击右侧【配置文件】链接:
      proxy_pass 那行(大约第5行)后,添加以下内容:
          proxy_ssl_name $proxy_host;
          proxy_ssl_server_name on;
      然后点击【保存】按钮。修改过的配置文件如下:
        #PROXY-START/
      
        location ^~ /
        {
          proxy_pass https://lumasterblog.link;
          proxy_ssl_name $proxy_host;
          proxy_ssl_server_name on;
          proxy_set_header Host lumasterblog.link;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header REMOTE-HOST $remote_addr;
      
          add_header X-Cache $upstream_cache_status;
      
          #Set Nginx Cache
      
          proxy_set_header Accept-Encoding "";
          sub_filter "lumasterblog.link" "bk.xjdh.org";
          sub_filter "lujunhong2or.com" "bk.xjdh.org";
          sub_filter_once off;
      
          set $is_static_file 0;
          if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" )
          {
            set $is_static_file 1;
            expires 12h;
          }
      
          if ( $is_static_file = 0 )
          {
            add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
            add_header Access-Control-Allow-Origin '*';
          }
        }

      其中,这句 add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0' 的作用是提示浏览器不要缓存返回的内容,这样每次得到的网页是最新的(除非是上面设置的 .gif、.png、.jpg、.css、.js 等文件,会缓存12小时)。

      add_header Access-Control-Allow-Origin '*'; 告诉浏览器允许 AJAX 跨站访问。

  8. 关闭弹出窗口,这样镜像就设置好了。