东东东 陈煜东的博客

分类存档: 网络 ( 1 / 4)

网络应用的文章

wordpress使用markdown extra插件

hello markdown!

用了一些markdown语法,发现很不错。以前博客使用的是html语言,感觉还ok,毕竟html标签用的比较少,常用的就codealitalbe这几个标签。但是在看文章的源代码的时候,那几个html标签看起来还是比较不爽的,一开一闭合,感觉很冗余。而且看文章的格式看上去不太清晰。

但是markdown就不会那样,看源码感觉就感觉整篇文章的结构依旧清晰。所以就将wordpress的结构进行修改,让其改成markdown语法。当然要支持markdown extra了。

选择、下载插件

这里的插件使用的是michelf markdown classic版本,这个版本是支持WordPress的,不要下载到PHP Markdown Lib,这个不支持WordPress的。

我上网找了一些markdown插件,发现种类繁多,不知道怎么确定,那么就是用michelf版本的好了,因为这个是我最先接触到的一个版本,有中先入为主的观点。

安装

这个插件安装就更简单了。

  • 下载来就一个文件markdown.php,将其放到(site home)/wp-content/plugins/目录。
  • 进入到WordPress后台,启用该插件。
  • 禁用可视化编辑器。进入到WordPress管理后台,用户->{选择一个用户}->可视化编辑器,勾选撰写文章时不使用可视化编辑器

然后就去尝试一些使用markdown撰写你的文章吧~

与语法高亮插件兼容

该插件和以前的文章兼容较好,但是发现和SyntaxHighlighter Evolved语法高亮插件有些不兼容,代码部分出现一些多余的标签。

markdown.php源码中有下面这个

add_filter('the_content',     'mdwp_MarkdownPost', 6);
add_filter('the_content_rss', 'mdwp_MarkdownPost', 6);
add_filter('get_the_excerpt', 'mdwp_MarkdownPost', 6);

这个是markdown的SyntaxHighlighter的优先级有不一样,SyntaxHighlighter的是7,所以我把markdown的语法调成8了。

add_filter('the_content',     'mdwp_MarkdownPost', 8);
add_filter('the_content_rss', 'mdwp_MarkdownPost', 8);
add_filter('get_the_excerpt', 'mdwp_MarkdownPost', 8);

文章中编写代码

要想文章中插入代码,不能使用markdown的语法,还是得使用SyntaxHighlighter的语法,毕竟SyntaxHighlighter有自己的语法规则。

所以上面的语法高亮还是这么使用:

[c0de language="php"]
add_filter('the_content',     'mdwp_MarkdownPost', 10);
add_filter('the_content_rss', 'mdwp_MarkdownPost', 10);
add_filter('get_the_excerpt', 'mdwp_MarkdownPost', 10);
[/c0de]

原谅我文中使用c0de代替code,因为插件嵌套工作不好呀。

参考

分类: wordpress

手工升级wordpress

以前的wordpress版本比较老,最近有新的版本升级了,想尝试一下。

因为之前有一些对wordpress的改动,还有主题的修改,所以不想让wordpress自动进行升级,而是自己升级文件,让wordpress升级数据库。

第一步:备份数据库、文件。

第二步:关闭所有的插件,这个最好还是先关闭然后再开启吧。

第三步:下载最新版的wordpress。然后解压缩到一个目录下。

第四步:替换wp-adminwp-includes这两个目录。复制新版根目录的所有文件到原先的目录(除了wp-config.php这样就不用修改数据库了)。

第五步:进入http://博客地址/wp-admin/upgrade.php,进行升级数据库。

一下下,博客就升级好了。

曾经以为只要把文件变成最新版的,wordpress可以使用老的数据库,然后自动升级,没想到失败了,原来是少了第五步,升级数据库,然后才能升级wordpress成功。但是,发现一个很长时间没管的js文件丢失了,还好有备份^_^

接下来你可能需要再次对wordpress做一些修改。比如:

分类: wordpress

Squid为http代理设置密码权限

touch /etc/squid/squid_passwd
chmod o+r /etc/squid/squid_passwd

#添加用户名和密码
htpasswd -cb /etc/squid/squid_passwd username password  

注意htpasswd是Apache Httpd中的一个应用,我在安装Squid后,发现这个就已经有了。如果没有这个程序的话,需要安装httpd服务器。

yum install httpd
apt-get install apache2

接下来修改squid的配置文件,/etc/squid/squid.conf

在文件的最上方添加下面的配置(总之在acl和http_access之前),我的ncsa_auth是在lib64下的,我是64位的操作系统

auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid_passwd

以前这个放在中间的时候,我这里出现了下面的问题:

Can’t use proxy auth because no authentication schemes are fully configured.

在acl那里配置里最后一行加入

acl ncsa_users proxy_auth REQUIRED

在http_access那里最上一行加入

http_access allow ncsa_users

重新启动

/etc/init.d/squid restart
chkconfig squid on  #开机自动启动,自己选择安装

附送一个代理检测网站,如果是高度的匿名代码是不会被检测出来的http://www.iprivacytools.com/proxy-checker-anonymity-test/

分类: 网络

Linux下ssh动态端口转发

SSH协议是一个非常棒的协议,因为他的存在,在互联网上传输才会的安全。

一般在Linux上,ssh客户端程序都会安装,ssh服务端程序不会安装。如果需要安装自己apt或者yum安装一下。

ssh的端口转发给我们带来了很多方便。比如我们在一个公共的WIFI环境或者局域网中,我们的网络包可以被他们截取,有了ssh的端口转发,他们之间会有一个加密的过程,防止被监听。

另外通过ssh端口转发,我们可以访问一些不能访问的网站。想象一下,你处于一个局域网中、或者学校的网络中,那么你的网络无法访问某些网站,此限制看网络管理员是如何限制的。比如在天朝,你无法访问facebook;再或者有些网站会封锁中国的IP,这些通过ssh的端口转发,就可以轻松的访问到。

ssh端口转发

ssh端口转发

根据图例说明:我们用浏览器访问www.google.com,此时浏览器开启了一个端口15453,但是发现在访问到某个节点,此网络包被丢弃了或者返回了错误的信息,导致我们无法访问www.google.com。但是我们想到了另外的一个方法,因为我们发现我们可以访问proxy.remotehost.com,而且他可以访问google.com,因此我们利用proxy.remotehost.com来做一个跳转。

因此我们利用的ssh的动态端口转发技术来达到这个目的。通过命令,我们在本地开启了一个7070端口,并且将7070端口关联到了proxy.remotehost.com的22号端口上。通过对浏览器设置,将所有的请求都转发到127.0.0.1:7070上,通过ssh的隧道,会将数据包传递到了proxy.remotehost.com:22。proxy服务器会随机开启一个端口去访问google.com。然后将数据在返回给proxy,再返回给浏览器。这就是一个代理转发的一个过程了。

下面我来看看如何具体的操作。

基本的动态端口转发

首先在我们的机器运行一下命令,先开启本机的7070端口到远程的22号端口的连接。

ssh -D 7070 -l username proxy.remotehost.com

参数说明:

  • -D 7070 -D [bind_address:]port D参数说明我们开启一个本地的端口转发。通过在本地分配一个socket去监听端口。只要有连接请求到这个port上来时,这个连接就会被安全通过给转发出去,应用程序的协议将有远程机器来决定连接到哪里。目前支持SOCKS4SOCKS5协议,ssh会扮演一个SOCKS5服务器。另外只有root用于才能转发原始端口。
  • -l username 小写字母l参数指定了登录ssh服务器的用户名
  • proxy.remotehost.com 指定了我们需要登录的远程ssh服务器。默认使用ssh程序的指定端口,一般是22号端口,除非系统做了修改

通过这一个命令,再配合一下浏览器的设置,我们就能访问被封锁的网站了。但是不能太高兴了,还是有些问题的。

帐号一登录成功就被退出了?

我的帐号在输入密码成功后,就被强制退出了,这样不就不能进行动态端口转发了吗?

其实这情况很容易解决,因为你的帐号被远程服务器做了手脚了,ssh服务器禁止这个帐号登录请求shell终端了,不能执行远程命令。目的是防止你登录他的系统进行命令的操作。一般专门用于代理的帐号都做了这个限制。

这个时候我们就需要增加一个参数-N来解决这个问题了。

ssh -D 7070 -l username proxy.remotehost.com -N

-N 参数是不请求一个shell界面,不执行远程命令。这个在只是端口转发的时候非常实用(只能在SSH2协议下工作,现在一般都是SSH2协议了,SSH1协议有安全问题,基本不用了)

让这个端口转发连接后台运行

如果只是上面的命令,在登录成功后,你是无法在当前的shell终端中进行任何的操作的,此时你想要干其他的事情只能再起一个端口了。

通常这个是没有意义的,放一个无用的窗口在那边,我们可以增加一个-f参数,让这个连接在后台运行

ssh -D 7070 -l username proxy.remotehost.com -Nf

这样我们就可以用当前的shell终端继续工作了。或者弄一个开机自动运行的脚本,开机自动连接。

给ssh连接增加http代理

如果你的PC无法直接访问到ssh服务器上,但是只有http代理可以访问,那么我们要建立这个socks5的动态端口转发只能为他加上一个代理了。

ssh -D 7070 -l username proxy.remotehost.com -Nf -o ProxyCommand="connect -H web-proxy.oa.com:8080 %h %p "

加上了-o ProxyCommand="connect -H web-proxy.oa.com:8080 %h %p "这个参数,就让我们的ssh连接建立在了一个http代理上了,这个应用对于在公司内网里面非常实用。

其中ProxyCommand指定了使用connect程序来进行代理。通常还可以使用corkscrew来达到相同的效果。

附connect的安装。

如果你是Ubuntu或者Debain系列的使用

sudo apt-get install connect-proxy

如果你是Ubuntu、Debain系列没找到源或者是Centos系列的,需用从下面去访问下载http://pkgs.org/download/connect-proxy。寻找一个适合你系统的包下载下来。

rpm -ivh connect-proxy-1.93-2.el6.x86_64.rpm
或者rpm -Uvh connect-proxy-1.93-2.el6.x86_64.rpm

一段时间没动作,连接自动断开了

一段时间没有发送消息,就出现了

Write failed: Broken pipe

这样的情况,这样的情况就是因为长时间没有发送消息,此隧道被关闭了。

因此我们需要设置一下ssh,让其每隔一段时间就发送一些消息,想服务器说明我还活着,不管关闭了我们的连接。

ssh -D 7070 -l username proxy.remotehost.com -Nf -o ProxyCommand="connect -H web-proxy.oa.com:8080 %h %p " -o ServerAliveInterval=60

分类: 网络

Squid搭建正向代理

本文主要讲述squid正向代理,如果你需要反向代理,可以参考一下Nginx的反向代理

网络环境复杂,不是所有的机器都能直接访问目标服务器的,总是有那么多的阻隔。比如我们的机器处于内网环境中(公司内网、墙内、学校内网),无法直接访问。这个时候如果有个机器能够访问外网的资源,那么我们就可以通过这个机器进行跳转。如下图。

正向代理

不只是普通的上网可以使用正向代理,我们的程序部署在内网内,但是又要主动请求外部资源的时候,这个时候也可以使用能够访问互联网资源的机器搭建正向代理服务。以此达到安全的服务。通过Squid,我们可以使用HTTP代理,这样就可以访问外网了。

安装Squid

快速的安装squid就是使用yum或者apt-get了。

yum install squid

默认的配置文件介绍

默认的文件在/etc/squid/squid.conf

#############################################################################
# squid权限控制 acl和http_access
#############################################################################
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# 局域网内的IP,看情况是否考虑需要
acl localnet src 10.0.0.0/8         # 一般大型企业或者学校使用,或者虚拟机中的网络
acl localnet src 172.16.0.0/12      # 一般很少用
acl localnet src 192.168.0.0/16     # 一般家用路由器或者虚拟机中的网络
acl localnet src fc00::/7           # IPv6
acl localnet src fe80::/10          # IPv6

# 定义ssl端口、一些安全端口和http访问的connect方法
acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT


# 推荐最小访问权限配置

# 允许本机管理缓存,其他的拒绝
http_access allow manager localhost
http_access deny manager

# 拒绝非安全端口
http_access deny !Safe_ports

# 拒绝connect到非ssl 443端口(上面定义了)
http_access deny CONNECT !SSL_ports

# 强烈建议去除注释。防止通过代理来访问本代理服务器上的web程序
# 以免认为是localhost用户访问web服务。
#http_access deny to_localhost

# 下面插入你自己的规则
#---------

# 允许localhost和局域网内用户的请求,根据需要调整
http_access allow localnet
http_access allow localhost

# 最后,拒绝其他的对代理的访问
http_access deny all

#############################################################################
##   Squid的基本配置
#############################################################################
# 默认监听3128端口
http_port 3128

# 设置对外显示的主机名
visible_hostname proxy.daoiqi.com


#############################################################################
###    squid缓存配置
#############################################################################
# 建议最少使用下面一行
hierarchy_stoplist cgi-bin ?

# 去除注释并调整下面这行语句来增加一个磁盘缓存目录
#cache_dir ufs /var/spool/squid 100 16 256

# 将核心输出保存在第一个缓存目录
coredump_dir /var/spool/squid

# 添加自己的刷新缓存的正则
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .       0   20% 4320

其中visible_hostname是我自己添加上去的,如果没有这个配置,会报warning。

默认的log路径为/var/log/squid/。可以进行查看一下相关的日志。

运行服务

service squid start # 启动squid
service squid stop 关闭squid
service squid restart 重启squid

以上部分基本上squid就可以正常工作了。

权限控制

默认的配置文件定义了局域网内用户都可以访问代理。但是在机房中,机器很多,他们都可能是处于内网上,这个需要注意。看看这些机器间是否有开启隔离,否则很危险。

对于云服务器来说这个应该还是安全的,他们会进行过滤。据我所知,目前云服务器上的隔离,主要是在宿主机(母机)上进行控制的,云服务器有一个内网IP和外网IP,对于内网IP的请求包,会在母机上使用iptables进行过滤。防止不同开发商的机器互相访问。

因此默认配置的局域网IP需要特别的注意一下。

附:我的squid配置

#############################################################################
# squid权限控制 acl和http_access
#############################################################################
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

# 声明我的IP,来自我的IP,可以请求squid。注意一定要有掩码
acl myip src 121.14.10.9/32

# 局域网内的IP,看情况是否考虑需要
acl localnet src 10.0.0.0/8         # 一般大型企业或者学校使用,或者虚拟机中的网络
acl localnet src 172.16.0.0/12      # 一般很少用
acl localnet src 192.168.0.0/16     # 一般家用路由器或者虚拟机中的网络
acl localnet src fc00::/7           # IPv6
acl localnet src fe80::/10          # IPv6

# 定义ssl端口、一些安全端口和http访问的connect方法
acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT


# 推荐最小访问权限配置

# 允许本机管理缓存,其他的拒绝
http_access allow manager localhost
http_access deny manager

# 拒绝非安全端口
http_access deny !Safe_ports

# 拒绝connect到非ssl 443端口(上面定义了)
http_access deny CONNECT !SSL_ports

# 强烈建议去除注释。防止通过代理来访问本代理服务器上的web程序
# 以免认为是localhost用户访问web服务。
#http_access deny to_localhost

# 下面插入你自己的规则
#---------
# 允许我的IP访问squid
http_access allow myip


# 允许localhost和局域网内用户的请求,根据需要调整
http_access allow localnet
http_access allow localhost

# 最后,拒绝其他的对代理的访问
http_access deny all

#############################################################################
##   Squid的基本配置
#############################################################################
# 默认监听3128端口
http_port 3128

# 设置对外显示的主机名
visible_hostname proxy.daoiqi.com

# 对于本地配置hosts的网站,没有此配置,squid无法访问本地的hosts。
# 但是官网文档默认值就是/etc/hosts,我要显示声明才有效。
hosts_file /etc/hosts

#############################################################################
###    squid缓存配置
#############################################################################
# 建议最少使用下面一行
hierarchy_stoplist cgi-bin ?

# 去除注释并调整下面这行语句来增加一个磁盘缓存目录
#cache_dir ufs /var/spool/squid 100 16 256

# 将核心输出保存在第一个缓存目录
coredump_dir /var/spool/squid

# 添加自己的刷新缓存的正则
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern .       0   20% 4320

分类: 网络

QQ邮箱无限容量

今天登录QQ邮箱,对QQ邮箱容量进行了一次免费升级。本以为容量会翻一番的,结果直接显示无限容量了。给了一个提示

您于2013年12月30日成为QQ邮箱第34654位升级至无限容量的用户!

邮箱容量从之前的1048576G变成无限。QQ邮箱可以每3个月手工扩容一次,或者你的邮箱容量使用了50%,3个月后容量会自动升级一倍。以前往邮箱里面拼命的发送附件,发送了40G就没有再发了,因为会频繁的出现说邮箱被攻击,屏蔽接收邮件。

这么大的邮箱可以干么用呢?

  • 当网盘用,但每个文件有50M的上限
  • 备份文件,但微云有10T的容量,够用
  • 备份服务器代码,定时给这个邮箱发送代码
  • 呃。。想不出来了

分类: 网络

PuTTY设置SSH端口代理转发

PuTTY是我用过的第一个SSH客户端,也是因为它,我接触了SSH,后来到公司工作后,发现大家都在使用SecureCRT,于是PuTTY就是用的比较少了。但是PuTTY还是在许多场合用到的。比如给git的图形客户端tortoisegit设置网络代理的时候会用上。

要使用SSH端口转发,首先下载一个putty,如果是公司内网,是无法直接连接外网的,需要有个代理服务器才能访问外网。如果不需要代理服务器就可以直接上网,可以使用myentunnel进行访问。

下载putty,http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

设置PuTTY

如图设置hostport,然后命名一个session保存起来,将来就不用再输入这些了。

设置本地转发端口

在与SSH服务器连接的同时,在本地开启一个7070端口,这样可以把网络请求转发到这个端口上,这个端口又与SSH服务器的22端口连接。

设置网络代理

如果你无法直接连接你的SSH服务器,那么你需要设置一下网络代理。如果你可以直接连接,那么忽略这步。在公司,必须通过代理才能访问外网,所以非常需要这步。

好了,通过以上设置,就可以连接SSH服务器了。连接成功后,利用本地开启的7070端口,就可以进行sock5进行SSH代理访问了。

推荐:给Goolge Chrome安装Proxy SwitchySharp插件。这个可以快速切换浏览器的代理模式,又兼有firefox的autoproxy功能。

分类: 网络

Nginx上搭建WordPress及配置 完美迁移

昨天晚上20点,空间的带宽达到上限了,本来1个月才2G的流量,现在20天就跑5G,23点才发现网站不能访问。赶紧将www.daoiqi.com域名解析转成日本的Linode服务器上,但是博客却还没有迁移,因为要在Nginx上搭建WordPress比较麻烦,需要配置一些东西。

今天趁着零碎的时间,终于把博客给迁移到Nginx上了。这篇文章是参考http://codex.wordpress.org/Nginx,官网给出的配置,我这里没办法使用,但是我已经解决了。

第一步:上传代码

将代码上传到服务器,目录/data/www/chenyudong.com/wwwroot

第二步:设置Nginx.conf

修改nginx.conf文件,它可能在/etc/nginx/nginx.conf或者/usr/local/nginx/conf/nginx.conf下,看你的具体情况。本文假定在/usr/local/nginx/conf/nginx.conf目录下。

# Generic startup file.
user {user} {group};

#ususally equal to number of CPU's you have. run command "grep processor /proc/cpuinfo | wc -l" to find it
worker_processes  2;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

# Keeps the logs free of messages about not being able to bind().
#daemon     off;

events {
    worker_connections  1024;
}

http {
#   rewrite_log on;

    include mime.types;
    default_type       application/octet-stream;
    access_log         /var/log/nginx/access.log;
    sendfile           on;
#   tcp_nopush         on;
    keepalive_timeout  3;
#   tcp_nodelay        on;
#   gzip               on;
        #php max upload limit cannot be larger than this
    client_max_body_size 13m;
    index              index.php index.html index.htm;

    # Upstream to abstract backend connection(s) for PHP.
    upstream php {
        #this should match value of "listen" directive in php-fpm pool
        #server unix:/tmp/php-fpm.sock;
        server 127.0.0.1:9000;
    }

    include sites-enabled/*;
}

对着你的Nginx.conf的配置,参考一下这个配置

  • 其中33~37行,这个是php-fpm的一些设置,php-fpm是运行php用的一个cgi,一般都用这个;
  • 第39行,这个是为了添加多个站点使用的,以后新增站点就不用修改nginx.conf,直接在sites-enabled目录下添加一个nginx的配置即可

我的机器上,只有监听127.0.0.1:9000端口进行php的处理,没有/tmp/php-fpm.sock这个sock,所以我将上面的一行给注释了。如果没有注意到,这里会出现403 Forbidden的错误。

每个站点的设置

你肯定是有多个站点的吧,不可能装一个nginx就跑一个网站。新建一个文件/usr/local/nginx/conf/sites-enabled/chenyudong.conf。注意文件的位置,是在conf/sites-enabled目录下面。

# Redirect everything to the main site. We use a separate server statement and NOT an if statement - see http://wiki.nginx.org/IfIsEvil
server {
        server_name  _;
        rewrite ^ $scheme://mysite.com$request_uri redirect;
}

server {
    server_name www.chenyudong.com;
    root /data/www/chenyudong.com/wwwroot;

    include global/restrictions.conf;

    # Additional rules go here.

    # Only include one of the files below.
    include global/wordpress.conf;
#   include global/wordpress-ms-subdir.conf;
#   include global/wordpress-ms-subdomain.conf;
}

我们注意到11行include了一个文件,17行include了一个文件。这两个文件因为比较具有通用性,所以将其单独提取出来,方便以后多个站点进行include,减少重复的编写。

第三步:编写restrictions.conf

新建一个文件夹/usr/local/nginx/conf/global/,并在这个目录下新建一个文件restrictions.conf,绝对路径为/usr/local/nginx/conf/global/restrictions.conf。

这个配置是给限制一些文件的访问的。

# Global restrictions configuration file.
# Designed to be included in any server {} block.</p>
location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~ /\. {
    deny all;
}

# Deny access to any files with a .php extension in the uploads directory
# Works in sub-directory installs and also in multisite network
# Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban)
location ~* /(?:uploads|files)/.*\.php$ {
    deny all;
}

文件说明:

  • 比如favicon.ico这个文件,一个网站的icon,就不用访问日志了,打出来也是浪费。robots.txt这个文件是给搜索引擎看得,也没必要打log
  • .开头的隐藏文件也禁止访问,这里面有重要的信息,比如 .htaccess, .htpasswd, .DS_Store (Mac).
  • uploads或者files下的php禁止访问,通常这个目录的意义是用户上传的一些文件,为了保证安全,防止用户上传可运行的脚本,禁止其访问。

通用的WordPress设置,配置文件

# WordPress single blog rules.
# Designed to be included in any server {} block.

# This order might seem weird - this is attempted to match last if rules below fail.
# http://wiki.nginx.org/HttpCoreModule
location / {
    index        index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Directives to send expires headers and turn off 404 error logging.
location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
       access_log off; log_not_found off; expires max;
}

# Uncomment one of the lines below for the appropriate caching plugin (if used).
#include global/wordpress-wp-super-cache.conf;
#include global/wordpress-w3-total-cache.conf;

# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
    # Zero-day exploit defense.
    # http://forum.nginx.org/read.php?2,88845,page=3
    # Won't work properly (404 error) if the file is not stored on this server, which is entirely possible with php-fpm/php-fcgi.
    # Comment the 'try_files' line out if you set up php-fpm/php-fcgi on another machine.  And then cross your fingers that you won't get hacked.
    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#   fastcgi_intercept_errors on;
    fastcgi_pass php;
}

注意到第7行,指明默认的首页的文件名是什么。我之前没有这一样,在nginx.conf里,也没有为站点做设置,结果访问http://www.chenyudong.com/index.html跳转到了http://www.chenyudong.com/,但是因为没有指定index的文件,导致又一个403 Forbidden错误。

第8行,try_files这个命令相当于做一个url重写,可以利用它来做一个伪静态。try_files $uri $uri/ /index.php?$args,$uri是nginx的一个变量,他的意义是先查看一下uri这个文件是不是存在,存在就返回,不存在就检查uri/这个目录看是否存在,存在返回,不存在查看index.php?$args这个是不是存在,如果不存在就返回默认的错误码,一般是404错误。

确认是否需要更改数据库密码

从其他的地方迁移过来,检查一下是否需要更改数据库的用户名和密码,在文件/wp-config.php,可以更改博客的数据库用户名和密码。

重启nginx

重启一下nginx,准确的说应该是重新读取一下配置。/usr/local/nginx/sbin/nginx -s reload

访问一下http://www.chenyudong.com/就可以了,而且原有的重写规则还是可以用的。

参考文章:http://codex.wordpress.org/Nginx

分类: wordpress, 网站建设

chrome v32解决QQ快速登录、支付宝、财付通安全控件启用插件

昨天更新了一下Google Chrome,发现出现32版本了,版本号为32.0.1664.3 m Aura,随手点击升级了。

现象

升级后,发现QQ快速登录无法使用,本来以为是QQ快捷登录插件出现问题,或者是浏览器临时出现的情况,没太在意。

第二天,登录财付通进行付款,无法使用安全控件登录,难道是安全控件无法支持最新版的Chrome?

于是点击下载,重新安装了一遍,发现还是不能使用。但是其他的浏览器比如IE、Firefox都可以使用这些插件。我也觉得这个只是个特例,没什么太大的影响,但是当我打开支付宝,发现也无法使用安全控件登录的时候,看来这个不是个特例呀,这么多的插件都不能使用了。

在Chrome的URL地址栏中,有一个提醒,说是运行网页上的插件,就算是这样也无法运行插件。

看样子,是Chrome把插件给禁用了,那么就可以在管理插件的页面进行启用了。

在支付宝的证书管理的时候,提示

当前操作环境不支持控件,为保护账户资金安全,需要通过你绑定手机的校验。

但是IE浏览器下却完好可用。这也是插件被禁用的情况。

原因

最近Google对Chrome浏览器的插件有一些动向,就是Chrome 将逐步放弃对 NPAPI 插件架构的支持,详情查看http://news.mydrivers.com/1/277/277033.htm

解决方法

打开网页chrome://plugins/,寻找需要启用的插件,如图

常用的插件有:

  • Tenpay Security Control         两个                                       财付通
  • Tencent SSO Platform – QQ QuickLogin Helper                  QQ快捷登录
  • Alipay Security Control  两个                                                  支付宝
  • npalicdo plugin 一个                                             支付宝证书、快捷支付

分类: 网络

codeigniter在nginx安装配置及URL重写

codeigniter(CI)是一个轻量型的PHP优秀框架,但是它是在apache服务器下开发的,在nginx下需要特别的配置才可以使用。

codeigniter修改

application/config/config.php进行修改,大约在48行左右。

$config['uri_protocol'] = "PATH_INFO";

修改nginx配置

对nginx的进行配置,nginx.conf

server {
        listen       80;
        listen [::]:80 ipv6only=on;
        server_name  www.example.com;

        root   /data/www/www.example.com;
        index index.php  index.html index.htm;

        location / {
                # 这里使用try_files进行url重写,不用rewrite了。
                try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php($|/) {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_param   PATH_INFO $fastcgi_path_info;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

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

要特别注意19行的include fastcgi_params;,如果没有这一行,那么你的PHP程序会无法运行的。我被这个坑了很多次了。

访问url

在CI框架下,有一个默认的controller,叫welcome。原先在没有nginx的rewrite前,我们需要通过这样的方式访问http://www.example.com/index.php/welcome/index。现在我们可以http://www.example.com/welcome/index这样访问URL了。

分类: 网络

较早的文章

Copyright © 2017 东东东 陈煜东的博客 粤ICP备13059639号-1

SITEMAP回到顶部 ↑