
什么是反向代理鏡像網站
小黑去飯店吃飯,小白是飯店的服務員,小紅是飯店的廚師。小黑點了一道酸辣土豆絲,想問什么時候能上菜。
直接訪問:
小黑直接去廚房問小紅什么時候能做好,小紅說十分鐘后。
反向代理:
因某種原因,小黑去不了廚房了,但是小白可以去廚房。
小黑問小白什么時候能做好,小白走進廚房詢問小紅什么時候能做好。
小紅告訴小白大約十分鐘,小白走回小黑面前,告訴小黑需要十分鐘。
2.反向代理操作步驟
假設需要用域名 bbbbb.com 去反向代理鏡像網站 aaaaa.com
購買域名 bbbbb.com:https://wangejiba.com/184.html
購買 VPS (海外主機):https://wangejiba.com/145.html
bbbbb.comDNS 解析:https://wangejiba.com/128.html
Lnmp 搭建 wbe 環境:https://wangejiba.com/104.html
創建虛擬主機(不用上傳網站程序):https://wangejiba.com/79.html
3.反向代理鏡像網站
看到第一步你會發現,上面的步驟和新建一個 WordPress 網站操作步驟一樣,只是在最后一步創建虛擬主機后沒有上傳網站程序。
3.1 HTTP 鏡像
HTTP 鏡像適用于:添加虛擬主機時選擇不啟用 SSL 證書,并且被鏡像的域名也沒有啟用 SSL 證書
打開/usr/local/nginx/conf/vhost
找到 bbbbb.com.conf 下載到本地
打開 bbbbb.com.conf 刪除所有內容,然后把以下內容復制到 bbbbb.com.conf
server
{
listen 80;
server_name bbbbb.com;
if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
return 403;
}
location / {
sub_filter aaaaa.com bbbbb.com;
sub_filter_once off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer http://aaaaa.com;
proxy_set_header Host aaaaa.com;
proxy_pass http://aaaaa.com;
proxy_set_header Accept-Encoding "";
}
}
然后把上述代碼中的 aaaaa.com 改為被鏡像的網站,
bbbbb.com 改為鏡像網站所用的域名
因為我的網站都不帶 WWW,所以示例也沒有 WWW,如果你的有 WWW,請自行就改吧
修改完畢保存,把需改好的 bbbbb.com.conf 上傳到服務器進行覆蓋替換
最后執行:/etc/init.d/nginx restart 重啟 nginx,使其生效。
3.2 HTTPS 鏡像
HTTPS 鏡像適用于:添加虛擬主機時選擇啟用 SSL 證書,并且被鏡像的域名也啟用了 SSL 證書
打開/usr/local/nginx/conf/vhost
找到 bbbbb.com.conf 下載到本地
打開 bbbbb.com.conf ,復制文中的如下證書內容(因域名不同,部分內容會有差別),保存到另一個文檔中:
ssl on;
ssl_certificate /etc/letsencrypt/live/bbbbb.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bbbbb.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACH:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
add_header Strict-Transport-Security "max-age=31536000";
然后清空 bbbbb.com.conf,把下方內容全部復制到被清空的 bbbbb.com.conf
server
{
listen 80;
listen 443 ssl;
server_name bbbbb.com ;
index index.html index.htm index.php default.html default.htm default.php;
root bbbbb.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/bbbbb.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bbbbb.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+CHACHA20:EECDH+CHACH:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
add_header Strict-Transport-Security "max-age=31536000";
if ( $scheme = http ){
return 301 https://$server_name$request_uri;
}
if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
return 403;
}
location / {
sub_filter aaaaa.com bbbbb.com;
sub_filter_once off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer https://aaaaa.com;
proxy_set_header Host aaaaa.com;
proxy_pass https://aaaaa.com;
proxy_set_header Accept-Encoding "";
}
}

修改 ABC 三處的內容
A 處,把 bbbbb.com 替換為你用來鏡像的域名
B 處,刪 B 處內容,把剛才單獨保存的證書內容復制到 B 處
C 處,把 bbbbb.com 替換為你用來鏡像的域名,把 aaaaa.com 替換為被鏡像的域名。
因為我的網站都不帶 WWW,所以示例也沒有 WWW,如果你的有 WWW,請自行就改吧,修改完畢保存,把需改好的 bbbbb.com.conf 上傳到服務器進行覆蓋替換。
最后執行:/etc/init.d/nginx restart 重啟 nginx,使其生效。
4.小的補充
反向代理的前提,是用來鏡像的服務器能訪問被鏡像的服務器。如果被鏡像的域名在國內被墻了,那么你購買國內的服務器去鏡像,肯定是失敗的,因為國內的服務器無法訪問被國內墻掉的網站。