吐槽
好吧,我知道前缀实在有点多。但是既然是折腾,那么越麻烦,折腾成功后就越快乐。
前由
月前,在 gullow上买了个年付 2$ 的 nat 小鸡,但是国内不能正常访问。但是呢,又想着在这个袖珍 vps 上搭建个小博客耍耍,于是想起了 cloudflare 这个神奇的 CDN 与 Nginx 反代的结合。
需要的工具:cloudflare,一台非 nat 的 vps ,nat vps
是的,你没看错,是需要两台 vps 。
安装 web 环境
为了避免混淆,非 nat 的 vps 称为 A ,nat vps 称为 B。
在 A 和 B 上都安装好 lnmp 环境,可以用宝塔或者lnmp一键安装包完成。B 的 php 版本要大于 5.3 ,否则安装 typecho 失败。可参考链接128M vps 安装lnmp。
域名解析
我是在 cloudflare 进行解析的。将域名指向 A 的 ip 地址即可。
配置 A 的 nginx
添加 A 的 nginx 的 vhost 文件(宝塔在 /www/server/panel/vhost/nginx/
文件夹下,lnmp可以用 lnmp vhost add
命令,不用)。配置如下:
server
{
listen 80;
server_name 域名;
if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
return 403;
}
location / {
sub_filter_once off;
proxy_set_header Host $host;
proxy_pass http:// B 的ip地址:端口;
proxy_set_header Accept-Encoding "";
}
}
配置文件中的 域名 和 http://B的ip地址:端口 记得修改成自己的,端口在服务商给nat小鸡分配的端口范围之内,并且没被使用就行。配置完成后,记得重启 nginx 。
配置 B 的 nginx
B 的 nginx 的 vhost 文件配置如下(此为lnmp一键安装环境的配置,注意不要选择安装证书):
代码语言:javascript复制server
{
listen 端口;
#listen [::]:80;
server_name 域名 ;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/nat.ikls.tk;
include rewrite/typecho.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*.php$ { deny all; }
include enable-php-pathinfo.conf;
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
端口和域名填跟上一步一样的。重启nginx。
上传安装文件到网站目录
我的目录在 /home/wwwroot/nat.ikls.tk 下,并且要安装的是 typecho 。把 typecho 安装文件解压后,然后直接访问域名。
完成搭建
按照 typecho 搭建步骤安装。
可以看到,网站搭建完成。直接访问 http://nat.ikls.tk/ 即可。
代码语言:javascript复制当然这只是一个搭建记录,照葫芦画瓢,了解原理可以创造更多好玩的应用。