📜  wordpress 多站点配置与 nginx (1)

📅  最后修改于: 2023-12-03 15:06:01.110000             🧑  作者: Mango

Wordpress 多站点配置与 Nginx

简介

Wordpress 是一个非常流行的开源博客系统,可以方便的快速创建一个博客网站。在一些情况下,我们需要创建多个博客网站,这时候就可以使用 Wordpress 多站点配置。本文详细介绍了如何在 Nginx 环境下配置 Wordpress 多站点。

准备工作

在开始配置 Wordpress 多站点之前,需要在 Nginx 环境下部署好 Wordpress 博客系统,并创建好一个站点。如果你还不知道如何在 Nginx 环境下部署 Wordpress,可以先看看这篇文章:Nginx + WordPress 搭建博客网站

配置文件示例

以下是一个配置文件示例,将一个 Wordpress 网站和一个 Wordpress 多站点部署在同一个 Nginx 服务器上:

server {
    listen 80;
    server_name example.com;

    root /var/www/wordpress;

    access_log /var/log/nginx/wordpress.access.log;
    error_log /var/log/nginx/wordpress.error.log;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

server {
    listen 80;
    server_name sub.example.com;

    root /var/www/wordpress-sub;

    access_log /var/log/nginx/wordpress-sub.access.log;
    error_log /var/log/nginx/wordpress-sub.error.log;

    location / {
        index index.php;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Wordpress multi-site config
    location ^~ /blogs.dir {
        internal;
        alias /var/www/wordpress-sub/wp-content/blogs.dir;
    }

    if (!-e $request_filename) {
        rewrite /sub.example.com/wp-admin$ $scheme://$host$uri/ permanent;
        rewrite ^(/[^/]+)?(/wp-.*) /wp$2 last;
        rewrite ^(/[^/]+)?(/.*\.php) /wp$2 last;
    }
}
配置解释

在上面的配置文件中,我们定义了两个 server,分别对应 example.com 和 sub.example.com 两个域名。其中第一个 server 就是普通的 Wordpress 站点,第二个 server 是 Wordpress 多站点配置所使用的站点。

两个 server 配置的代码很相似,都是配置了根目录、日志、PHP 解析等等。唯一不同的是第二个 server 加入了 Wordpress 多站点配置:

location ^~ /blogs.dir {
    internal;
    alias /var/www/wordpress-sub/wp-content/blogs.dir;
}

if (!-e $request_filename) {
    rewrite /sub.example.com/wp-admin$ $scheme://$host$uri/ permanent;
    rewrite ^(/[^/]+)?(/wp-.*) /wp$2 last;
    rewrite ^(/[^/]+)?(/.*\.php) /wp$2 last;
}

这部分配置主要是定义了 Wordpress 多站点的上传路径和重写规则:

  • 上传路径:Wordpress 多站点的上传路径是 /wp-content/blogs.dir/$blog_id/files/,其中 $blog_id 是对应的站点 ID。在 Nginx 中,我们使用 alias 指令将 /blogs.dir 路径指向该路径。
  • 重写规则:Wordpress 多站点使用了比较复杂的 URL 结构,需要使用 Nginx 的 rewrite 指令将 URL 重写为正确的格式。
总结

本文介绍了如何在 Nginx 环境下配置 Wordpress 多站点。通过这种方式,我们可以在一个服务器上部署多个 Wordpress 站点,从而更加灵活地管理和扩展我们的博客系统。