Nginx+WordPress:将其配置为安全、可靠和快速的最佳实践?

时间:2013-01-08 作者:wgpubs

BACKGROUND:

运行Linode上的所有内容。遵循“入门”、“保护服务器”、“Ubuntu 12.04上的LEMP服务器”和“使用WordPress管理Web内容”指南,我成功地运行了我的第一个WordPress网站。现在,我想知道除了指南之外,我应该做什么(或者至少得到一些有经验的建议,我应该考虑做什么)。

QUESTION:

What further configuration should I implement to produce the most solid, reliable, secure, and fast Wordpress sites that I plan on hosting?

我特别关注的几个领域:

我应该对每个wp文件夹设置哪些权限?用户需要上传各种资产(图像、PDF、office文档、音频、视频)。我找到了这个article 这似乎很有帮助,但想从做过这件事的人那里得到一些意见吗?

nginx的建议配置是什么?下面是我的,但由于我是nginx的新手,我对自己拥有的最佳配置甚至都不是很有信心。可以/应该做些什么来改进它?

是w3总缓存还是WP超级缓存?什么是更好/最好的缓存选项?人们如何管理他们的缓存?由于我运行的是ummanaged服务器,可能还有其他建议?

如何设置CDN以及应该在其中设置什么?我有一个Amazon S3帐户要使用,只是不知道该如何使用?

我应该使用什么来执行和管理Wordpress网站(内容和数据库)的备份?

我应该为强健的安全基础架构安装什么?

我应该用什么来监控性能和潜在问题(无论是性能还是安全漏洞)?

一般来说,人们应该在哪些方面偏离指南?

还有其他建议吗???

我当前的NGINX配置:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # Logging Settings
        ##

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

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";
        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/x-javascript text/xml 
        application/xml application/xml+rss text/javascript;

        ##
        # nginx-naxsi config
        ##
        # Uncomment it if you installed nginx-naxsi
        ##

        #include /etc/nginx/naxsi_core.rules;

        ##
        # nginx-passenger config
        ##
        # Uncomment it if you installed nginx-passenger
        ##

        #passenger_root /usr;
        #passenger_ruby /usr/bin/ruby;

        ##
        # Virtual Host Configs
        ##


        port_in_redirect off;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        server {
                server_name www.mydomain.com mydomain.com;
                access_log /srv/www/mydomain.com/logs/access.log;
                error_log /srv/www/mydomain.com/logs/error.log;
                root /srv/www/mydomain.com/public_html;
                index index.html index.htm index.php

                include conf.d/drop;

                location / {
                        # This is cool because no php is touched for static content
                        try_files $uri $uri/ /index.php?q=$uri&$args;
                }

                location ~ \\.php$ {
                        try_files $uri =404;
                        include /etc/nginx/fastcgi_params;
                        fastcgi_pass 127.0.0.1:9000;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME   
                           /srv/www/mydomain.com/public_html$fastcgi_script_name;
                }
        }
}
谢谢!

3 个回复
SO网友:chrisguitarguy

我应该对每个wp文件夹设置哪些权限?用户需要上传各种资产(图像、PDF、office文档、音频、视频)。我发现这篇文章似乎很有帮助,但想从做过这件事的人那里得到一些意见吗?

这将与任何其他web服务器相同。无论用户运行的是什么,web服务器都需要访问其所要服务的文件的权限。由于PHP-FPM支持PHP部分,其用户将需要访问PHP文件。通常PHP-FPM和Nginx都将在同一个用户下运行,但这取决于您自己。

所以假设Nginx和PHP-FPM都在www数据下运行。您的文档根目录及其文件应由该用户可读。如果我正在为客户端运行服务器,我可能会使用部署用户进行脚本化/自动化部署,因此这可能意味着文件将是组可读/写的。Eg公司775 权限。

nginx的/a建议配置是什么?下面是我的,但由于我是nginx的新手,我对自己拥有的最佳配置甚至都不是很有信心。可以/应该做些什么来改进它?

github上有一些回购协议,您应该看看:

https://github.com/perusio/wordpress-nginx

https://github.com/pothi/WordPress-Nginx

两者都有非常好的Nginx配置文件示例。

您所拥有的看起来像是默认的Ubuntu安装配置。需要记住的几件事:

Nginx速度很快。就像愚蠢的快。如果您没有做任何疯狂的CPU密集型(ala服务SSL)的事情,那么单工作进程应该可以。但您可以将其提升到与CPU内核数相等的数量

  • worker_connections 有一些好消息in the docs 您应该了解服务器可以处理的最大客户端数limit_conn_zonelimit_zone 介绍一些有趣的事情来帮助缓解流量高峰。它们也很难调整和纠正。小心使用set Expires headers. 没有每个目录的配置文件,如.htaccess 在nginx中,您可以控制缓存头。请确保在服务器配置中执行此操作gzip module 并了解指令的作用以及是否需要修改任何内容。尤其地gzip_types, 仅默认为text/html.w3总缓存还是WP超级缓存?什么是更好/最好的缓存选项?人们如何管理他们的缓存?由于我运行的是ummanaged服务器,可能还有其他建议?

    我建议您在确定需要之前不要这样做。如果您所在的服务器具有完全的访问权限,那么我可以通过持久对象缓存和batcache.

    您如何设置CDN,应该在其中设置什么?我有一个Amazon S3帐户要使用,只是不知道该如何使用?

    S3不是CDN。所以你想把你的照片搬到别处去?然后使用S3+CloudFront和S3作为服务器文件的源。

    如果您想要一个超级简单的CDN,请设置一个“源拉式”CDN,该CDN从您的服务器获取文件,尊重其缓存头并基于其刷新,并为您提供服务器文件。这是incredible easy to set up.

    我应该使用什么来执行和管理Wordpress站点(内容和数据库)的备份?

    我是个超级书呆子,所以我使用自动脚本(用fabric编写Fabric) 只需SSHmysqldump 然后下载SQL转储。Rsync抓取静态文件的速度很快,但您也可以只抓取媒体快照并下载它。

    显然,这个问题还有其他解决方案。Vaultpress等。环顾四周。

    我应该为强健的安全基础架构安装什么?

    无密码SSH。而且,既然你控制着这个盒子,你就可以拥有WordPressuse bcrypt 散列密码以使其稍微更安全。

    除此之外,通常的东西也适用:良好的密码和适当的权限授予——无论是在WP中还是在服务器本身上。

    我应该使用什么来监控性能和潜在问题(无论是性能还是安全漏洞)?

    你挑吧。环顾四周。查看需要监视的内容。有正常运行时间监视器、系统性能监视解决方案。这个问题太宽泛了。

    一般来说,人们应该在哪些方面偏离指南?

    当指导方针不适合你时。

    这些问题的大多数后续问题都更适合像这样的网站ServerFault, 顺便说一句

  • SO网友:kaiser

    我真的对Nginx一无所知,但这里有一些可能有用的资源。并不是所有的东西都是英文的,但谷歌翻译应该致力于此。

    SO网友:Pothi Kalimuthu

    nginx+wordpress:将其配置为安全、可靠和快速的最佳实践?

    没有php fpm或Apache的帮助,Nginx无法运行WordPress(无论如何,这需要另一个php处理程序)。如果我们将Apache与Nginx结合使用,那么所有适用于Apache服务器的最佳实践也将适用于Nginx。当然,还有更多。

    我应该实施什么进一步的配置来创建我计划托管的最可靠、安全和快速的Wordpress站点?

    每个WordPress站点都需要在安全性、可靠性和性能方面进行具体调整。我们从来都不知道你plan 关于未来的托管。最重要的是,事情几乎总是在变化。例如,Akismet引入了。htaccess文件since 2.5.7 to block direct access to files. 如果我们不打算掌握所有这些,那么现在适用的任何建议都只适用于现在。

    我应该对每个wp文件夹设置哪些权限?用户需要上传各种资产(图像、PDF、office文档、音频、视频)。我发现这篇文章似乎很有用,但想从做过这件事的人那里得到一些意见吗?

    任何服务器堆栈的经验法则(无论部署在其中的应用程序是什么)都是从最小权限开始,看看它是否工作。从那里你可以向上走,直到一切正常。

    nginx的/a建议配置是什么?下面是我的,但由于我是nginx的新手,我对自己拥有的最佳配置甚至都不是很有信心。

    每个站点需要不同的配置。由于性能原因,域名中带有“www”前缀的站点的配置与没有“www”前缀的站点的配置不同。启用“SSL”的站点的配置与非SSL站点的配置不同。多站点网络(子域/子目录)具有完全不同的配置。

    可以/应该做些什么来改进它?

    您可能想学习由以下人员编写的最佳实践experts 在那个领域。如果SEO专家写了关于Nginx(或WordPress)安全性的文章,那么可能是不正确的、不完整的,甚至是完全错误的,因为其中存在安全漏洞。:)一个好的起点是the Nginx mailing list. Nginx上也有几本书。

    w3总缓存还是WP超级缓存?什么是更好/最好的缓存选项?人们如何管理他们的缓存?由于我运行的是ummanaged服务器,可能还有其他建议?

    W3 Total Cache和WP Supercache在Nginx/PHP-FPM和Nginx/Apache中都可以正常工作。Batcache(使用APC或Memcache)也是如此。当您运行非托管服务器时,我建议Varnish缓存可能仍然不适用于所有站点,例如电子商务站点。选择正确的缓存完全取决于各个站点。这可能还需要对各种缓存技术进行一些反复试验。哦,我忘了提到Nginx也有内置的缓存机制(对于fastcgi和代理配置)。

    我应该使用什么来执行和管理Wordpress站点(内容和数据库)的备份?

    我使用并强烈推荐RubyGem Backup 对于非关键和小型站点。

    我应该使用什么来监控性能和潜在问题(无论是性能还是安全漏洞)?

    我使用并推荐Zabbix 用于监控。还有很多其他选择。

    由于时间有限,我无法回答其他问题。对不起:(

    结束

    相关推荐

    Transient api Caches confused

    此代码适用于第1页<?php $paged1 = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $recent1 = get_transient( \'recent1\' ); if ( false === $recent1) { $recent1 = new WP_Query