某些公司會牆特定網站,如果你有一個可訪問的域名和服務器,就可以通過nginx反向代理來來解決這些問題。比如現在我們用mirror.example.com鏡像www.baidu.com,以下是詳細操作。
一、DNS里添加A記錄,新增子域名,如:mirror.example.com
二、nginx里新增解析文件
(一)http去鏡像http
server {
listen 9999;
server_name mirror.example.com;
charset utf-8;
location / {
proxy_pass http://www.baidu.com;
proxy_set_header Accept-Encoding deflate;
sub_filter_once off;
sub_filter www.baidu.com mirror.example.com;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
(二)https去鏡像https
server {
listen 9999 ssl;
server_name mirror.example.com;
ssl_certificate /usr/local/ssl/nginx.crt; #證書公鑰
ssl_certificate_key /usr/local/ssl/nginx.key; #證書私鑰
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
proxy_ssl_server_name on;
# 下面這段location配置是關鍵
location / {
sub_filter www.baidu.com mirror.example.com;
sub_filter_once off;
proxy_ssl_session_reuse 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://www.baidu.com;
proxy_set_header Host www.baidu.com;
proxy_pass https://www.baidu.com;
proxy_set_header Accept-Encoding "";
}
}
三、重啟nginx
