介绍


WordPress 是当今互联网上最流行的 CMS(内容管理系统)。 WordPress 网站可以使用 Apache 或 NGINX 等 HTTP 服务器提供服务,而 Apache 是服务网站的绝佳选择,许多网站已迁移到 NGINX,因为它具有可扩展的事件驱动架构、低资源和更好的静态文件交付。在本教程中,您将学习如何为各种类型的 WordPress 安装配置 NGINX,包括多站点配置、重写规则以及使用 .conf 文件来应用重复配置。

要求


在本指南中,您将需要 sudo 来安装和编辑文件。我假设您已经完成了初始服务器设置。

您将需要安装 MySQL、PHP 和 NGINX。您可以按照这些指南在 Ubuntu 上安装 LEMP -04) 或 Debian。

请注意,我们的服务器块将有所不同,并且在本教程中,我们使 PHP-FPM 使用 UNIX 套接字。

基本 NGINX 优化


调整 NGINX 工作进程和连接


通常建议将 NGINX 工作程序的数量设置为等于处理器的数量,您可以使用以下方法确定处理器的数量:

猫 /proc/cpuinfo | grep 处理器

打开主要的 NGINX 配置文件:

Sudonano / 等 / Ngin x / Ngin x。 conf

根据您的系统规格增加或减少工作人员的数量:

worker_processes 1;

NGINX 限制了工作人员一次可以维护的连接数,如果您的网站有很多访问者,您可能希望增加连接数限制。理论上最大连接数u003dworkers*限制。

工人连接768;

启用 Gzip


可以使用 Gzip 压缩文件来加速 WordPress,用户请求的数据量越小,响应速度越快。想想 CSS 文件和 HTML 文件,它们有许多相似的字符串、重复的文本和空格。 Gzip 使用一种称为 DEFLATE 的算法,该算法通过链接到相同字符串的先前位置来删除重复的字符串,并创建一个小得多的文件。找到 Gzip 部分并启用它:

gzip打开;
gzip_types text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon ;

保存并退出。

创建 NGINX .conf 文件


由于您可能托管多个 WordPress 网站,我们将创建一些可以从服务器块加载的 .conf 文件,而不是在每个服务器块上多次编写相同的配置。

在接下来的步骤中,我们将创建 3 个文件来保存我们的配置:

  • common.conf:适用于所有站点的配置。

  • wordpress.conf:适用于所有 WordPress 站点的配置。

  • multisite.conf:带有子目录的 WordPress 多站点的特殊配置。

我们将在一个名为“global”的目录中创建所有文件,但首先我们需要创建上述目录:

须藤 mkdir /etc/nginx/global

我将 /etc/nginx/global 设置为当前目录只是为了让事情变得更容易。

cd /etc/nginx/global

common.conf 文件


让我们创建适用于任何类型网站的第一个 .conf 文件。

sudo nano common.conf

这将打开一个空文件,复制以下配置:

# 全局配置文件。
# ESSENTIAL : 配置 Nginx 监听端口
听 80;
# ESSENTIAL : 默认文件服务。如果没有找到第一个文件,
索引 index.php index.html index.htm;
# ESSENTIAL : 没有网站图标日志
位置 u003d /favicon.ico {
log_not_found 关闭;
access_log 关闭;
}
# 基本:robots.txt
位置 u003d /robots.txt {
允许全部;
log_not_found 关闭;
access_log 关闭;
}
# ESSENTIAL : 配置 404 页面
error_page 404 /404.html;
# ESSENTIAL : 配置 50x 页面
error_page 500 502 503 504 /50x.html;
位置 u003d /50x.html {
根 /usr/share/nginx/www;
}
# SECURITY : 拒绝所有访问隐藏文件 .abcde 的尝试
位置〜/ \。 {
全部否认;
}
# PERFORMANCE : 为静态文件设置过期标头并关闭日志记录。
位置 ~* ^.+\.(js|css|swf|xml|txt|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 关闭; log_not_found 关闭; 30天到期;
}

listen 80; 指定服务器的监听端口。

index index.php... 指定要服务的默认文件(WordPress index.php)。如果未找到第一个文件,则使用第二个文件,依此类推。您可能有 HTML 网站,这就是我们包含 index.html 和 index.htm; 的原因。

location u003d /robots.txt {allow all;}允许访问robots.txt,如果你想为robots.txt指定另一个目录,你可以添加一个别名:

位置 /robots.txt {
别名 /var/www/example.com/public/sample_robots.txt;
}

位置〜/ \。 {deny all;} 在 Linux 操作系统中,隐藏文件以“.”开头,出于安全原因,应阻止对某些隐藏文件(例如 .htaccess)的访问。

location ~* ^.+\.(js|css|swf... expires headers 告诉浏览器他们是否应该从服务器请求特定文件,或者他们是否应该从浏览器的缓存中获取它。使用 expires 30d 我们是告诉浏览器将图片等静态文件存储30天。

保存并退出。

wordpress.conf 文件


让我们创建一个适用于所有 WordPress 网站的 .conf 文件:

须藤纳米 wordpress.conf

这将打开一个空文件,复制以下配置:

# WORDPRESS : 重写规则,通过 index.php 发送所有内容并保持附加的查询字符串完整
地点 / {
try_files $uri $uri/ /index.php?qu003d$uri&$args;
}

# SECURITY : 拒绝所有访问上传目录中 PHP 文件的尝试
位置 ~* /(?:uploads|files)/.*\.php$ {
全部否认;
}
# 要求:启用 PHP 支持
位置 ~ \.php$ {
# 安全:零日漏洞利用保护
try_files $uri u003d404;
# ENABLE : 启用 PHP,监听 fpm sock
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
包括 fastcgi_params;
}
# PLUGINS : 为 Yoast SEO 站点地图启用重写规则
最后重写 ^/sitemap_index\.xml$ /index.php?sitemapu003d1;
最后重写 ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemapu003d$1&sitemap_nu003d$2;

#是的!你做到了。

try_files $uri $uri/ /index.php?qu003d$uri&$args 重写规则允许您在 WordPress 上选择自定义永久链接结构。

location ~* /(?:uploads|files)/.*\.php$ {deny all;} 这将防止恶意代码从 WordPress 媒体目录上传和执行。

location ~ \.php$ {...} 因为 WordPress 是一个 php 站点,我们需要告诉 NGINX 如何将我们的 php 脚本传递给 PHP5。

try_files $uri u003d404; 这是一个安全规则,您只想提供一个确定的 php 文件或转到 404 错误。

更多规则:您可能想要添加更多 NGINX 规则,例如,如果您使用与我一样在所有安装中需要自定义规则的相同 WP 插件,您可以在此 .conf 文件中添加更多规则,例如我在所有网站上都使用 Yoast SEO,因此我在这里添加了所需的重写规则,这样我就不必为每个服务器块复制相同的重写规则。

multisite.conf 文件


与单站点 WordPress 不同,它可以使用“丑陋”的永久链接,因此不需要任何 URL 重写,MultiSite 安装需要自定义重写规则来格式化您的子站点的 URL。让我们创建一个适用于多站点 WordPress 安装的 .conf 文件:

须藤纳米多站点.conf

这将打开一个空文件,复制所需的重写规则:

# 重写 WordPress 多站点的规则。
if (!-e $request_filename) {
重写 /wp-admin$ $scheme://$host$uri/ 永久;
翻领 ^/ш_0-яа-за-З-шт+(/вп-.*) 最后 1 美元;
翻领 ^/ш_0-яа-за-З-шт+(/.*ю.фп)$ $1 最后;
}

保存并退出。

小笔记


我们当前的工作目录是**/etc/nginx/global**,如果你想改变它,你可以输入:

cd /desired_directory

创建服务器块


是时候创建我们的第一个服务器块了。由于我们已经在 .conf 文件中配置了所有内容,因此无需复制默认服务器块文件。让我们禁用默认服务器块:

sudo rm /etc/nginx/sites-enabled/default

并创建一个服务器块文件:

sudo nano /etc/nginx/sites-available/demo

这将打开一个空文件,根据您要实现的目标复制以下配置:

简单的 WordPress 安装


想象一下,你想用这个域 www.demo.com 配置一个 WordPress 站点。首先,我们必须创建一个服务器块server {...},我们将在其中放置我们的规则。我们必须指定给定 URL 使用哪个服务器块,包括 common.confwordpress.conf,最后我们将告诉 NGINX 在我们的服务器中安装 WordPress 的位置。

服务器 {
# URL:重定向 URL 的正确方法
server_name demo.com;
重写 ^/(.*)$ http://www.demo.com/$1 永久;
}
服务器 {
server_name www.demo.com;
根 /home/demouser/sitedir;
access_log /var/log/nginx/www.demo.com.access.log;
错误日志/var/log/nginx/www.demo.com.error.log;
包括 global/common.conf;
包括全局/wordpress.conf;
}

请记住更改以下数据以满足您的需求:

  • server_name:确定哪个服务器块用于给定的 URL。

  • root:存储站点的路径。

  • 访问日志和错误日志:设置日志路径

可以看到有两个 server 块,这是因为 www.demo.com 和 demo.com 是不同的 URL。您可能想确保 Google、Bing、用户......等选择您想要的 URL,在这种情况下,我希望我的网站是 www.demo.com 所以我已配置从 demo.com 到 www.demo.com 的永久重定向。也可以指定多个域:

服务器 {
# URL:重定向 URL 的正确方法
server_name demo.com sub.demo.com example.com;

带有子目录的多站点


如果你想要一个带有子目录的多站点安装,你需要包含存储在 multisite.conf 中的重写规则:

# URL:如果需要,添加一个永久重定向。
服务器 {
server_name www.demo1.com;
根/home/demouser/sitedir1;
access_log /var/log/nginx/www.demo1.com.access.log;
错误日志/var/log/nginx/www.demo1.com.error.log;
包括 global/common.conf;
包括全局/wordpress.conf;
包括 global/multisite.conf;
}

带有子域的多站点


如果您想要使用子域进行多站点安装,则需要配置此服务器块以使用通配符侦听域:

服务器 {
server_name *.demo2.com;
根 /home/demouser/sitedir2;
access_log /var/log/nginx/demo2.com.access.log;
错误日志/var/log/nginx/demo2.com.error.log;
包括 global/common.conf;
包括全局/wordpress.conf;
}

HTML 和其他网站


如果您想托管简单的 html 网站或其他 web 应用程序,您可能需要指定自定义规则或创建更多 .conf 文件并将它们包含在服务器块中:

# URL:如果需要,添加一个永久重定向。
服务器 {
server_name www.demo3.com;
根 /home/demouser/sitedir3;
access_log /var/log/nginx/demo3.com.access.log;
错误日志/var/log/nginx/demo3.com.error.log;
# 自定义规则
}

记得保存并退出。

启用服务器块文件


最后一步是通过在站点可用目录和站点启用目录之间创建符号链接来激活主机:

sudo ln -s /etc/nginx/sites-available/demo /etc/nginx/sites-enabled/demo

我们对配置进行了很多更改。重新加载 NGINX 并使更改可见。

sudo 服务 nginx 重新加载;

最后的笔记


要创建其他虚拟主机,您只需重复上述过程,每次都要小心设置一个具有适当新域名的新文档根目录。也可以将多个服务器块组合在一个文件中:

服务器 {
server_name demo.com;
重写 ^/(.*)$ http://www.demo.com/$1 永久;
}
服务器 {
server_name www.demo.com;
根 /home/demouser/sitedir;
access_log /var/log/nginx/www.demo.com.access.log;
错误日志/var/log/nginx/www.demo.com.error.log;
包括 global/common.conf;
包括全局/wordpress.conf;
}

服务器 {
server_name www.demo1.com;
根/home/demouser/sitedir1;
access_log /var/log/nginx/www.demo1.com.access.log;
错误日志/var/log/nginx/www.demo1.com.error.log;
包括 global/common.conf;
包括全局/wordpress.conf;
包括 global/multisite.conf;
}
# 更多服务器块....
Logo

更多推荐