nginx 配置镜像站与替换链接 [可能失效]
最终效果是
foo.com/
展示bar.com/
foo.com/syn/
展示ack.com/
foo.com/
中的ack.com/
链接替换为foo.com/syn/
目录
开始
foo.com.conf
server
{
listen 80;
#listen [::]:80;
server_name foo.com ;
return 301 https://foo.com$request_uri; # redirect http to https
}
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name foo.com ;
auth_basic "Oops.";
auth_basic_user_file /path/to/.htpasswd;
location /
{
resolver 1.1.1.1;
proxy_redirect off;
proxy_set_header Accept-Encoding "";
proxy_set_header Host bar.com;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://bar.com/;
subs_filter ack.com foo.com/syn;
}
location /syn
{
resolver 1.1.1.1;
proxy_redirect off;
proxy_set_header Host ack.com;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass https://ack.com/;
}
include /path/to/ssl-params.conf; # ssl config
access_log /path/to/access.log;
}
resolver
当 proxy_pass
使用域名时,添加 resolver [nameserver];
防止 nginx 启动时产生 host not found in upstream
错误。
或者,直接查询域名 IP 并替换掉域名。
替换文字或链接
使用 subs_filter
(ngx_http_substitutions_filter_module)
或 sub_filter
(ngx_http_sub_module),执行 nginx -V
确保 nginx 安装了模块。
反向代理中使用时请加上 proxy_set_header Accept-Encoding "";
,否则无法替换。
For safety reasons…
Restricting Access with HTTP Basic Authentication
加上 HTTP 认证。
htpasswd 内容可使用 htpasswd-generator 生成。
auth
写在 location
块内仅对该路径生效,写在 server
块内则对块下所有 location
路径生效。
ssl-params.conf
Mozilla SSL Configuration Generator
ssl_certificate /path/to/server.cer;
ssl_certificate_key /path/to/server.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_dhparam /path/to/dhparam.pem;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
resolver_timeout 5s;
ssl_trusted_certificate /path/to/chain.pem;
ssl_early_data on;
proxy_set_header Early-Data $ssl_early_data;
结束
前几天去了趟亲戚家,被问到在哪看番和下载,我即答并在他家电脑上输入了那个网址……才发觉那个网站原来是“不存在的”。于是今天稍微整了一下,弄出了个镜像站,可能以后会有用吧。
blog 又有半年多没更了,趁机水一篇续个命
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。