在Nginx上将多个WordPress配置在子路径中的方法是什么?
基本上,WordPress無法同時設定多個主題。雖然有一些插件可以允許使用多個主題,但是是否能夠使用取決於核心版本,而且如果使用了帖子名稱作為永久鏈接,指定的主題將不會生效。
因此,我將WordPress分為多個子路徑,才實現了這個目標,這也是我想與大家分享的。
在下面的例子中,我们将两个WordPress配置如下。
URLディレクトリhttp://host/wpone//var/www/wponeroot/wpone/http://host/wptwo//var/www/wptworoot/wptwo/
假设在http://host/上存在WordPress以外的内容,在default.conf中添加以下的include指令。
需要注意的是,假设nginx的配置文件夹位于/etc/nginx。
server {
:
:
include conf.d/sub/wpone.conf
include conf.d/sub/wptwo.conf
:
:
}
以下是两个WordPress的设置,但关键是不要使用alias指令直接指定WordPress的安装目录,而是在root指令指定的目录下,将WordPress安装在与URL子路径同名的子目录中。
location /wpone {
root /var/www/wponeroot;
access_log /var/log/nginx/wpone.access.log main;
error_log /var/log/nginx/wpone.error.log;
# wordpress パーマリンク設定
try_files $uri $uri/ /wpone/index.php?q=$uri&$args;
include conf.d/sub/wordpress-common;
}
location /wptwo {
root /var/www/wptworoot;
access_log /var/log/nginx/wptwo.access.log main;
error_log /var/log/nginx/wptwo.error.log;
# wordpress パーマリンク設定
try_files $uri $uri/ /wptwo/index.php?q=$uri&$args;
include conf.d/sub/wordpress-common;
}
以下是两个适用于WordPress的常见设置。
如果多个位置设置有许多共同点,将它们合并到一个文件中并使用include指令导入会提高可维护性。
index index.php;
charset utf-8;
# アクセス拒否設定
location ~* /(wp-config|xmlrpc)\.php {
deny all;
}
# アクセス制限設定
location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ {
index index.php;
# 外部からのアクセス許可
allow 87.65.43.21;
# 自身からのアクセス許可
allow 12.34.56.78;
allow 127.0.0.1;
# 上記以外はアクセス拒否
deny all;
include conf.d/sub/fastcgi-for-wordpress;
}
include conf.d/sub/fastcgi-for-wordpress;
如果你希望在同一层级的位置指令中进行访问控制,则只有一个位置指令会被采纳。为了实现上述访问控制,可以将用于php-fpm的设置定义到一个单独的文件中,并将其引入到两个include指令中,这样就能实现对不需要访问控制的PHP文件进行例外处理。
# php-fpm用設定
location ~\.php$ {
fastcgi_split_path_info ^(.+\.php)(.+)$;
fastcgi_pass phpfpm;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}
将wpone / hoge配置到wptwo的方法
虽然只是一些小技巧,但如果要在 http://host/wpone/hoge 中放置 wptwo,则需要按照以下方式配置反向代理。
location /wpone {
location /wpone/hoge/ {
proxy_pass http://localhost/wptwo/;
}
:
:
}