在vps上搭建nginx+twip

apache上搭建twip也试过,不过apache不愧是个吃资源的大户,于是准备改用nginx。网上搜了把发现还是很简单的,以下内容在原来的基础上略有修改。 1.安装需要的包

apt-get install curl libcurl3 libcurl3-dev

2.安装php组件

apt-get install php5-cli php5-cgi php5-curl spawn-fcgi

在最后添加:cgi.fix_pathinfo=1修改配置项:/etc/php5/cgi/php.ini 3.安装nginx组件

apt-get install nginx

4.启动php服务

1
2
killall -HUP php-cgi
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

5.配置nginx的配置文件,这里面需要注意下,有几个地方略作了修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
    listen   443;
    server_name  twip.somename.com:443;
    root   /var/www;

    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php last;
        }
        index  index.php index.html index.htm;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include    fastcgi_params;
    }

    location ~ /\.ht {
    deny  all;
    }
}

注意,因为我使用了加密连接,所以这里我监听的是443端口,server_name是你的域名root和fastcgi_param里的路径和你的api路径一致,我的是直接放在网站根目录下,如果你是放在yourdomain.com/twip下的话 可以改成/var/www/twip。 这段配置还有一个需要注意的地方就是要放在nginx.conf的http节点里面。由于我配置了ssl加密连接,所以还需要配置下相关证书。 在http节点里server节点外面加上配置好的证书路径即可。

ssl on;
ssl_certificate /etc/nginx/conf/ssl-unified.crt;
ssl_certificate_key /etc/nginx/conf/ssl.key;

关于证书的配置方法,因为我用的是startssl的免费证书,所以具体的方法可以看看他们的faq,非常简单。 最后就是部署twip了,这个也非常简单,到code.google.com上down下代码把config.php里的consume_key之类的填一下上传即可。 最后重启下nginx看看,/etc/init.d/nginx restart。   以上文章大部分参考的是在vps上搭建nginx+twip,在此借用希望不介意。

Lighttpd下的https强制跳转

考虑到以后可能会出现的敏感内容,于是申请并且安装了个免费的startssl的证书,然后~打算看看怎么才能强制使用ssl连接。。。

以下内容摘自:http://redmine.lighttpd.net/projects/1/wiki/HowToRedirectHttpToHttps

 

How to redirect HTTP requests to HTTPS

Since 1.4.19 the following should work. For older versions check the history of this page… or just update, srsly.

Example 1 – redirect everything

$HTTP["scheme"] == "http" {
    # capture vhost name with regex conditiona -> %0 in redirect pattern
    # must be the most inner block to the redirect rule
    $HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0$0")
    }
}

Example 2 – specific url

$HTTP["scheme"] == "http" {
    $HTTP["host"] =~ ".*" {
        url.redirect = ("^/phpmyadmin/.*" => "https://%0$0")
    }
}

Example 3 – only for specific vhost and url

$HTTP["scheme"] == "http" {
    $HTTP["host"] == "sth.example.com" {
            url.redirect = ("^/phpmyadmin/.*" => "https://sth.example.com$0")
    }
}

Further stuff

Also works the other way round (https -> http) with if $HTTP["scheme"] == "https"

Lighttpd、Apache强制跳转https

这两者其实质都是通过重定向来实现的,只不过lighttpd不能使用.htaccess文件,所以它的配置是写在lighttpd.conf配置文件下的。两者方法如下

Lighttpd:

#vi /etc/lighttpd/lighttpd.conf

添加如下内容:

$HTTP[“scheme”] == “http” {
# capture vhost name with regex conditiona -> %0 in redirect pattern
# must be the most inner block to the redirect rule
$HTTP[“host”] =~ “.*” {
url.redirect = (“.*” => “https://%0$0”)
}
}

Apache:

Apache的重定向可以写在配置文件(具体位置根据安装方法不同,我的使用Debian下直接apt-get的,其路径为 /etc/apache2/sites-enabled/000-default)

也可以直接写在目录的.htaccess文件下

如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容:

RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$ //也可以这么写RewriteCond %{HTTPS} off,呵呵,下面的例子又是一种写法,至于为什么,自己想去
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
如果对某个目录做https强制跳转,则复制以下代码:
RewriteEngine on
RewriteBase /yourfolder
RewriteCond %{SERVER_PORT} !^443$
#RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

或者这样

#RewriteCond %{HTTP_HOST} !=’你的域名(包括引号,不带http前缀哦)’ [NC,OR]
#RewriteCond %{HTTPS} !=on [NC]
#RewriteRule ^(.*)$ https://’你的域名加访问路径(含引号)’%{REQUEST_URI} [L,R=301]
如果只需要对某个网页进行https跳转,可以使用redirect 301来做跳转!

redirect 301  /你的网页 https://你的主机+网页

其实,rewrite规则就是正则表达式,具体的怎么写法,等有时间再整理下。