前一篇写了下怎么用站点网络功能,在一个Wordpress安装上建立多个分站,不过分站只能绑定到二级域名,这样意义就不大了。怎么绑定到一级域名呢? 网上查了一下,要用一个Domain Mapping插件,可是这个插件貌似与新版Wordpress兼容性不大好。恰好找到这个帖子,不用插件也可以绑定!(可能需要先保证Pretty Permalink正常使用)具体说来这么几步:
WordPress 3.0+版本支持MultiSite,站点网络功能,也就是安装一份Wordpress,就可以弄出多个WP站点来,就像新浪博客那样。 默认情况下可以支持sub-domain(二级域名)和sub-directory(子目录)两种方式。官方文档提供了Apache的配置方式,nginx的配置文档要在nginx官网找。试了一下sub-domain模式,非常简单。
1、PHP配置 disable_functions = show_source,phpinfo,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority
之前的配置文件总有这样那样的问题。 经过反复测试,现在这样写: location /wp-content/uploads/ { #只有jpg/jpeg/png/gif文件可以被访问,其它的一律403。 if ($request_filename !~* \.(jpg|jpeg|gif|png)$) { return 403; } #只写上面一段的话,php还是会被解析运行,大概是优先级的问题,还得写下面这句才行 location ~* .*.(php|cgi|sh|py|pl|jsp|asp)$ { deny all; } } 这样一来,只有jpg/jpeg/png/gif文件可以被访问,其它的一律403。
nginx官网提供了常用blog/cms等系统的示例配置文件。Wordpress的在这里。 基础的是这样: server { ## Your website name goes here. server_name domain.tld; ## Your only path reference. root /var/www/wordpress; ## This should be in your…
前面文章里提过open_basedir来保平安,但那个是写在一句里的,对整个服务器而言的设置。 PHP5.3支持对每个虚拟主机设置不同的open_basedir。感觉安全性又高了一层。 这样搞: vim /etc/php5/fpm/php.ini 你机子上的php.ini可能不在这个位置,反正改php.ini就对了。 找到open_basedir这一条,改成下面这种格式: [HOST=www.aaa.com] open_basedir=/usr/share/nginx/html/aaacom/:/tmp/:/proc/ [HOST=/home/www/www.bbb.com] open_basedir=/usr/share/nginx/html/bbbcom:/tmp/:/proc/ 当然,如果你的机器只跑一个网站那也就没必要了。
nginx和php5-fpm的配置 nginx的配置要和php5-fpm联合起来说。 这俩是什么关系呢?原先在LAMP中,Apache接受客户端的请求,发现是php文件的话,就扔给mod_php来处理。而用了nginx+php5-fpm的话,nginx接受请求,把php文件扔给php5-fpm来处理。 其实,Apache也可以把php扔给php5-fpm,nginx也可以把php扔给Apache的mod_php(很多人这么干),不过我还没看出来这有什么好处。