Логинимся в wordpress используя SSL
Учитывая частоту нахождения дыр в 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 и пробуем залогиниться на сайт
Похожие записи:
