1、单配置单域名重定向
网站更换域名,如原nntd.com换gxsan.com
在宝塔建立一个网站nntd.com,纯静态,添加一条重定向
2、国外vps反向代理国内VPS分流非国内,单配置多域名反向
cloudflare免费,但不快,用测速网站测试只有30%的在线率,自己弄个国外vps用NGINX反向自己国内VPS
建立一个网站把你要反向的域名全加入这里(如果ssl不是同一个的话你要分开来建立,或者你把所有的域名添加上去把IP全解释到这vps把ssl申请下来再作分流解释,续签的时候也要作一次),并修改/etc/hosts把你要反向的域名全绑定到你国内的vps的IP上(用这反向分流的配置,这步很重要而且是必须,如是负载后端的方式就不需要),然后你需要一个像dnspod这样的解释提供商,可以设定国外、国内走什么IP
如图上设置后,在配置修改server_name把你要反向的域名全部添加到这里。
我有过一台vps设置完后,刚开始刷出现过301重复重定向,重启几次这样,不理它第二天行了,没时间折腾所以没细调,估计是在域名传递给后端的国内vps的wordpress站群失败所以反复301的问题。
注:如果你要折腾可以考虑开启
3、开启nginx的fast-cache,Bt默认支持的,你只需在nginx.conf添加
fastcgi_cache_path /dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:30m inactive=32m max_size=64m;
fastcgi_temp_path /dev/shm/nginx-temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
fastcgi_cache_min_uses 1;
你还需再网站的配置文件插入
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/login.*|/user.*|/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|w3tc_logged_out|wordpress_no_cache|wordpress_logged_in|wptouch_switch_toggle") {
set $skip_cache 1;
}
然后在/www/server/nginx/conf/pathinfo.conf插入
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache "$upstream_cache_status From $host";
fastcgi_cache WORDPRESS;
add_header Last-Modified $date_gmt;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
fastcgi_cache_valid 200 301 302 1d;
为什么选这个文件呢?在多版本php宝塔都会调用这个文件,插入这里不管啥版本都能用。
要注意上面插入的三个地方,先后插入乱了会提示错误,宝塔保存就会检查keys_zone(ssh命令行不会先检查),上文的cache目录是在内存上的(也把塔默认的/tmp/php-cgi-73.sock移动到/dev/shm/),我在一台vps启动nginx和php-fpm有过失败的问题,查日志,提示已经启动,重复启动,但后台不显示已经启动。
4、wordpress站群的域名跳转,我站群一级域名使用的是去掉www,
server { server_name "~^www\.(.*)$" ; return 301 $scheme://$1$request_uri ; }
加在配置未见的末尾,不然你修改文件时bt会先修改排前的server_name位置的域名。
5、默认的“禁止访问的文件或目录”不起作用,比如你站点用的w3-total-cache,它默认在网站根目录生成nginx.conf伪静态配置,你要调用它,如你启用了防夸站,你只能放在网站目录下,为安全你必须要禁止直接访问该文件,用Bt默认的“禁止访问的文件或目录”配置加上“\.conf”是无效的,我加上
location ~ \.(conf|ini)$ { return 444; }
6、我用宝塔稳定版安装在vps上的centos7,它并没删除系统自带的http,这样系统启动会让http占用80端口导致nginx启动失败,先检查httpd服务
rpm -qa | grep httpd
或
yum list | grep httpd
再用
systemctl stop httpd.service
停掉httpd
然后用rpm -e或yum -erase卸载
yum erase httpd.x86_64
7、加装Brotli
安装libbrotli
cd /www/server
git clone https://github.com/bagder/libbrotli
cd libbrotli
./autogen.sh
./configure
make && make install
下载ngx_brotli模块及其依赖:
cd /www/server
#下载brotli
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
#更新brotli
git submodule update --init
查看nginx -V用来对比之后是否安装了
nginx关闭默认站点/空主机头(禁止IP直接访问、防止域名恶意解析)
在/www/server/panel/vhost/nginx/0.default.conf 中头部修改为如下代码:
server
{
listen 80 default_server;
listen 443 default_server;
server_name _;
ssl_certificate /www/server/panel/vhost/cert/域名/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/域名/privkey.pem;
return 444;
index index.html;
root /www/server/nginx/html;
}
随便添加个证书即可。访问https//ip就不会再跳到网站。