Shadowsocks 忘记重启自启动了

自从某次网站挂了重启之后,搭建的shadowsocks再也没能用过。。。搞了好久都不行,总以为密码或者linode哪里出了问题。然后忍者肉痛买了digitalocean,过不久又抽风了,然后从旧金山貌似迁移到纽约3节点,还是有点断断续续的,然后偶然发现了vultr,东京节点速度很快也很稳定,但是用站长之家测试ping值linode还是比vultr快点的。

vultr就当个shadowsocks的服务器好了。。。

这两天还是想把linode的shadowsocks这挺好,突然发现貌似一直没有启动shadowsocks的服务。。。sigh~蠢了这么久,哎

vps搭建l2tp vpn

参考链接:

  1. http://blog.csdn.net/sonsie007/article/details/16932017
  2. http://www.wangyuxiong.com/archives/52330
  3. http://freenuts.com/how-to-set-up-a-l2tpipsec-vpn-in-a-vps/
  4. http://askubuntu.com/questions/337036/openswans-ipsec-verify-fails-on-two-or-more-interfaces-found-checking-ip-forw
  5. http://serverfault.com/questions/619115/ipsec-verify-on-ubuntu-two-or-more-interfaces-found-checking-ip-forwarding-fai
  6. http://www.scar1et.org/l2tp-for-centos
  7. http://blog.csdn.net/hah1995/article/details/46254279

VPS服务商备注

  1. linode,老牌云服务商,用来做站还是不错的。vpn好久没有折腾了,貌似用不了,写博客还是可以的。
  2. digitalocean,用digitalocean只是用来配合shadowsocks翻墙用的,可惜旧金山的节点不知道为啥在公司总是连不上,过了好久,在家实在想用,折腾了vultr,一切都ok了之后突发奇想打算把旧金山节点迁移到东京节点,额,发现没有东京,就试了纽约1,发现根本ping不同,然后就试了纽约3,ping200多,貌似还凑合吧。因为迁移对旧金山节点做了快照,需要关机,快照了之后貌似自己自动重启了。然后正打算删掉旧金山节点时,发现旧金山节点的ss竟然能用了,由于是DO第一个节点,速度还行,不忍心删掉,打算第二天在公司试试。到了公司发现这个旧金山节点依然不行,果断狠心删之,只留下了纽约节点,希望能撑一段时间吧。不行了再迁移!!
  3. vultr,经历digitalocean折磨之后,试用了一下,居然看YouTube还不卡,速度比digitalocean的旧金山节点还要快,那个激动啊!先免费试用两个月,如果稳定就花钱买一个了。参考链接:http://mpc2008cn.github.io/2015/10/22/vps/
  4. 刚刚同事给了我一个日本的vps厂商,想想也是,很多人买的都是美国公司的日本数据中心,那何不用日本厂商的日本数据中心呢?这个性价比真不错。只不过速度和稳定性还没有测试。
  5. shadowsocks福利:http://www.ishadowsocks.com/

grunt connect proxy regexp example

// The actual grunt server settings
connect: {
    options: {
        port: 9000,
        livereload: 35729,
        // Change this to '0.0.0.0' to access the server from outside
        // hostname: 'localhost'
        hostname: '0.0.0.0'
    },
    // proxy配置
    proxies: [{
        context: '/cortex',
        host: '0.0.0.0',
        port: 80,
        https: false
    }],
    // proxy
    server: {
        options: {
            open: 'http://localhost',
            base: [
                '<%= yeoman.dist %>',
                '<%= yeoman.tmp %>',
                '<%= yeoman.app %>'
            ],
            middleware: function (connect, options, middlewares) {
                middlewares.push(
                    function (req, res, next) {
                        var fs = require('fs');
                        var path = require('path');
                        var mimeType = {
                            "css": "text/css",
                            "gif": "image/gif",
                            "html": "text/html",
                            "ico": "image/x-icon",
                            "jpeg": "image/jpeg",
                            "jpg": "image/jpeg",
                            "js": "text/javascript",
                            "json": "application/json",
                            "pdf": "application/pdf",
                            "png": "image/png",
                            "svg": "image/svg+xml",
                            "swf": "application/x-shockwave-flash",
                            "tiff": "image/tiff",
                            "txt": "text/plain",
                            "wav": "audio/x-wav",
                            "wma": "audio/x-ms-wma",
                            "wmv": "video/x-ms-wmv",
                            "xml": "text/xml"
                        };

                        // just redirect static files to local workspace
                        if (!/\.(js|html|css|png)/g.test(req.url)) {
                            next();
                            return;
                        }

                        var pathname = req._parsedUrl.pathname;
                        var ext = path.extname(pathname);
                        ext = ext ? ext.slice(1) : 'unknown';
                        var contentType = mimeType[ext] || "text/plain";
                        pathname = path.resolve(process.cwd(), '.') + pathname;

                        fs.exists(pathname, function (exists) {
                            if (!exists) {
                                res.writeHead(404, {
                                    'Content-Type': 'text/plain'
                                });
                                res.write("This request URL " + pathname + " was not found on this server.");
                                res.end();
                            } else {
                                fs.readFile(pathname, "binary", function (err, file) {
                                    if (err) {
                                        res.writeHead(500, {
                                            'Content-Type': 'text/plain'
                                        });
                                        res.end(err);
                                    } else {
                                        res.writeHead(200, {
                                            'Content-Type': contentType
                                        });
                                        res.write(file, "binary");
                                        res.end();
                                    }
                                });
                            }
                        });
                    }
                );

                // Setup the proxy
                middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest);
                return middlewares;
            }
        }
    }
}

// other code
grunt.registerTask('serve', function (target) {
    grunt.task.run([
        'clean:dist',
        'less',
        'stylus',
        'configureProxies:server',
        'connect:server',
        'watch'
    ]);
});

ie9在服务器重定向时会丢失hash值的bug

高版本浏览器在服务器重定向时会带上原始链接中的hash值,某些低版本浏览器如IE9,则只会带上重定向时location中的hash值。因此对于单页面应用,某些情况下会出错。如对于nginx重定向http到https这种场景,如果location中没有带上原始数据的hash值,则就会有问题。

参考链接:

URL Fragment and 302 redirects

IE9 redirect test page

VPS在LAMP的基础上增加Nginx

在原有LAMP结构的基础上,增加Nginx转发。主要工作如下:

  1. 修改Apache默认监听的端口号80为其他新的端口号,修改Apache内sites-available中virtual-host的监听的端口号为新的端口号。
  2. 修改Nginx中sites-available中配置,保持Nginx的监听的80端口号不变,增加转发规则,主要是将请求转发到localhost:新的端口号以便Apache能处理。最后一定要将这里的修改建立软连接到sites-enabled:ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
  3. 增加对其他请求的处理转发。
  4. 重启apache和Nginx。

点击参考链接查看更多内容

Chrome+SSH+SwitchSharp 绕过VPN翻墙

  1. 首先你得有个人VPN,如LINODE。
  2. 登录VPN,创建一个新的限制bash登录的用户,如userName,并设置密码。创建用户:sudo useradd -M -s /sbin/nologin -N userName。创建密码:passwd userName。
  3. 下载MyTunnel,点击设置,输入SSH服务器也就是你的VPN的IP,SSH端口号为22,输入用户名userName和密码,最后一个端口默认7070即可。点击链接,可以点击状态查看有没有请求成功,如果看到“连接已经稳定下来了”说明连接成功了。
  4. 打开Chrome,安装插件SwitchSharp。
  5. 找到SwitchSharp,一个地球模样的图标。点击图标-选择选项-进入SwitchSharp配置页面。
  6. 在情景模式中输入一个名字如SSH,选中手动配置,选中SOCKS代理,在后面的端口中填上刚才设定的7070端口,选中SOCKS v5。点击最下面的保存。
  7. 点击切换规则,选中启用切换规则,新建规则,URL模式一栏输入*://autoproxy-gfwlist.googlecode.com/*,后面选择通配符,选择设定的情景模式名字SSH。
  8. 选中下面的在线规则列表,输入http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt。依次选择每天,SSH。
  9. 选中AutoProxy兼用列表。
  10. 点击保存。
  11. 点击SwitchSharp,选择自动切换模式。
  12. 每天开机了就把MyTunnel打开,然后就可以玩Google、Twitter、Facebook以及Youtube等网站了。

部分软件和操作可以通过VPN翻墙的方式弄好。

同类文章:http://www.zotob.org/1.html

wordpress Permalink 404 not found

博客搬家,使用新版之后各种不顺。博客的固定链接修改为postname格式总是会显示404,找了不少文章,终于在官网发现了一篇,顺着作者的方法试一试,果然ok了,两个站都正常了。看来还是对apache以及wordpress不熟。再一次证明了官网的重要性!
简要翻译如下:

0:默认此时的固定链接为postname;
1:设置wordpress站点对应的.htaccess文件的权限:
sudo chmod 666 .htaccess
chown www-data:www-data .htaccess

2:将固定链接设置为默认值(default)并保存;
3:将固定链接再次设置为postname,并保存;
4:重写mod(我使用的是apache2以上版本):
a2enmod rewrite
5:重启apache服务器:
/etc/init.d/apache2 restart
6:刷新博客。