Логинимся в wordpress используя SSL

опубликовал 13 мая 2010 в разделе "FreeBSD"

Учитывая частоту нахождения дыр в php в целом и движке wordpress’а в частности, лишняя защита не помешает. Нынче мы сделаем авторизацию в wordpress через https. Допустим сейчас наш сервер работает с таким конфигом:

server
{
 listen          80;
 server_name     www.server.ru;

 location ~ .*(gif|jpg|jpeg|png|ico|css|swf|flv|js|html|htm|xls)$
 {
 root   /usr/home/www/public_html/server.ru/htdocs;
 access_log   off;
 expires      5d;
 break;
 }

 location ~ .php$    {        include     /usr/local/etc/nginx/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME /usr/home/www/public_html/server.ru/htdocs$fastcgi_script_name;
 fastcgi_param QUERY_STRING    $query_string;
 fastcgi_pass  127.0.0.1:9000;
 break;
 }

 location /
 {
 fastcgi_index index.php;
 include     /usr/local/etc/nginx/fastcgi_params;
 fastcgi_param SCRIPT_FILENAME /usr/home/www/public_html/server.ru/htdocs$fastcgi_script_name;
 fastcgi_param QUERY_STRING    $query_string;
 fastcgi_pass  127.0.0.1:9000;
 }
}

В такой конфигурации, что анонимус, что залогиненый админ, все юзают виртуалхост через обычный http.Давайте это исправим и принудим пользователя при логине на сайт, делать это через https. Начальную настройку SSL в nginx описывать не буду(такая заметка уже есть у меня в блоге), поэтому перейдем прямо к делу. В изначальном описании виртуального хоста добавляем локейшн для wp-login.php с рерайтом, перенаправляющим пользователя на https:

    location = /wp-login.php {
             rewrite .* https://www.server.ru/wp-login.php break;
    }

а так же добавим виртуальный хост для https:

server {
   include /usr/local/etc/nginx/ssl.conf;
   listen 443;
   server_name www.server.ru;
   location ~ .*(gif|jpg|jpeg|png|ico|css|swf|flv|js|html|htm|xls|zip|rar|tgz|ppsx|avi|mp3)$
   {
       root   /usr/home/www/public_html/server.ru/htdocs;
       access_log   off;
       expires      5d;
       break;
   }
   location ~ .php$
   {
       include     /usr/local/etc/nginx/fastcgi_params;
       fastcgi_param SCRIPT_FILENAME /usr/home/www/public_html/server.ru/htdocs$fastcgi_script_name;
       fastcgi_param QUERY_STRING    $query_string;
       fastcgi_pass  127.0.0.1:9000;
       break;
   }

   location /
   {
       fastcgi_index index.php;
       include     /usr/local/etc/nginx/fastcgi_params;
       fastcgi_param SCRIPT_FILENAME /usr/home/www/public_html/server.ru/htdocs$fastcgi_script_name;
       fastcgi_param QUERY_STRING    $query_string;
       fastcgi_pass  127.0.0.1:9000;
   }
}

в /usr/local/etc/nginx/ssl.conf написано следующее:

ssl                   on;
ssl_protocols             SSLv3 TLSv1;
ssl_certificate           /usr/local/etc/nginx/ssl/server.crt;
ssl_certificate_key     /usr/local/etc/nginx/ssl/server.key;
ssl_session_timeout    5m;

ну и последним штрихом добавляем в wp-config.php строки:

// Force use https in admin interface
define('FORCE_SSL_LOGIN', true);

рестартуем nginx и пробуем залогиниться на сайт

Похожие записи:

  1. Распределение нагрузки между несколькими серверами
  2. Генерация SSL-сертификатов
  3. Nginx + PHP fastcgi
  4. Nginx+ruby-on-rails
  5. Статистика по трафику oops

Оставить комментарий




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


*