动态类型的博客都有一个后台地址,方便用户随时对站点进行设置以及更新内容,Wordpress 默认的是 /wp-admin,Ghost 默认的是 /ghost。咱就是说,虽然个人博客大部份都是吃灰的小破站,基本不会有什么安全风险之类的问题,但是总有人会希望能多点自定义,不想什么都按照默认的来。

于是乎修改后台管理界面的入口就变成了部份人必做的事情了。如果是以前有使用过 Wordpress,可能对于「修改后台地址」这个操作不陌生,毕竟插件商店里直接就有现成的工具,可以很方便的修改后台入口。但是 Ghost 呢,官方文档虽然有说如何绑定二级域名做后台入口,但人家也说了,无论怎么改,本身 「域名+/ghost」的方式都还是能进入后台界面的。

那如何能实现像 Wordpress 那些插件能达到的同等的效果呢?就是,让后台界面只能通过特定的 URL 来访问,同时让原本的后台地址 /ghost 变得无法访问。

其实很简单的,用 Nginx 来实现(其他反向代理工具也都行,同理)~


毕竟自荐了博客,不可能不弄个域名,既然要绑定域名,那肯定还是少不了反向代理工具。至于反向代理工具,大部份人又都是在用 Nginx,那就说说 Nginx 是怎么来实现修改 Ghost 的后台登陆地址的吧~

方法很简单,咱们来先吧原本的 /ghost 给禁止掉:

# 限制默认的后台访问(排除掉后台加载必要的 api 和 assets)
location ~ /ghost/(?!api|assets) {                  
	error_page 404 = /404;           
	return 404;                    
}
原始的后台地址给个 404 或者 403。

这个 location 用正则排除了 /ghost 但是保留了子路径下的 api 和 assets,是因为后台的加载会需要用到,如果全部屏蔽会导致自定义后的后台加载也会出问题。

屏蔽了原本的后台入口地址之后,新建两个 location 用来反代后台:

# 后台 API 和 assets 不缓存
location ~ /ghost/(api|assets) {
	proxy_pass http://146.56.108.0:2368;
    
	# 浏览器不缓存     
	add_header Cache-Control no-store;

	## 服务器不缓存 和 服务器直接请求后端
	proxy_no_cache 1;
	proxy_cache_bypass 1;
} 
配置 API 和 assets 不使用缓存,避免某些后台编辑时会出现的错误

这个配置中需要改一项:把 proxy_pass 后的内容改成自己 ghost 的 IP 和 端口;

## 后台入口
location /new-backend {
	# 自动从入口地址转跳到后台地址 
	rewrite ^/gh-admin$ /gh-admin/#/dashboard permanent;

	# 反向代理原本的 ghost 后台
	proxy_pass http://127.0.0.1:2368/ghost;

	# 让浏览器不对此路径的内容做缓存
	add_header Cache-Control no-store;

	# 让此路径不适用 Nginx 缓存
	proxy_no_cache 1;
	proxy_cache_bypass 1;
}
配置新的后台入口地址

这个配置中需要改两项:

  1. location 后面的地址,设置成自己想要的后台入口地址;
  2. proxy_pass 配置成自己 ghost 的 ip+端口号,后面加上 /ghost

至于 rewrite 还有 cache 之类的设置,可以根据自己的需求来改,正常来说其实都不用改,因为 ghost 完整的后台路径是 /backend/#/dashboard ,如果不设置转跳,访问起来打太多字很麻烦;另外缓存的话,因为后台需要保证实时性,所以不建议使用缓存,反正后台的访问体验对游客也没有影响。


除了 Nginx 外,其他的的 Apache 啊 Caddy 也都可以做到,方法大同小异,就是先屏蔽原本的 /ghost ,然后新建地址来反向代理原本的后台。