最近因为备案的原因,来总的服务器,从阿里云签到腾讯云,一年来,经常被黑,各种垃圾帖子满天飞,数据还被删过几次。
服务器上只是托管了几个 WordPress网站,用于静态展示。(用现有程序不好的地方就是,漏洞公开,大家都知道)。下面 IP 和 域名是假的,不要访问哦。
【1】在一台服务器的情况下,采用映射的方式(暂时没加缓存)
- 对内目录地址:/data/realpauli.cn
- 对内管理入口:虚拟 host 替换成 http://realpauli.cn
- 对内 nginx 下 WordPress 配置:
server {
listen 80;
server_name realpauli.cn;
root /data/realpauli.cn;
index index.html index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/logs/fastcgi/nginxFastCGI.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
【2】目录映射(用于找到上传的静态文件,css文件,wp 模板等)
ln -s /data/realpauli.cn/wp-content /data/pauli.cn/wp-content
【3】对外 nginx 配置
server {
listen 80;
server_name pauli.cn;
root /data/pauli.cn;
index index.html index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/logs/fastcgi/nginxFastCGI.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
if (!-e $request_filename) {
rewrite . /index.php last;
}
}
}
【4】代理文件(因为 WordPress 在页面中,写入了很多 host 信息,要去掉)
// /data/pauli.cn/index.php
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET') { // 只允许 get 请求
$url = $_SERVER['REQUEST_URI'];
$url = preg_replace('/(\?|#).*/', '', $url); // 移除查询条件
$matched = @preg_match("/^(\/archive\/.*|\/)$/", $url);
if ($matched) {
$real_path = 'http://realpauli.cn';
$content = file_get_contents($real_path . $url);
$content = str_ireplace($real_path, '', $content);
$content = str_ireplace($real_host, '', $content);
echo $content;
exit(0);
}
}
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');
echo '404 Not Found';
代码还可以做磁盘缓存~
【5】对内网址如果是虚拟 host,需要配置域名映射。如果是路径 http://1.2.3.4/__pauli 则不需要
# /etc/hosts
127.0.0.1 realpauli.cn