Dùng htpasswd là cách bảo mật cao nhất ở cấp độ server cho wordpress so với việc dùng các plugin trên wordpress hiện nay.
Nội dung chính
Cài đặt các thư viện
Cài đặt httpd-tools
để có htpasswd
:
sudo yum install httpd-tools
Tạo tệp .htpasswd
:
sudo htpasswd -c /etc/nginx/.htpasswd your_username
Cấu hình Nginx:
- Mở tệp cấu hình Nginx của bạn, thường nằm ở
/etc/nginx/conf.d/your_site.conf
hoặc/etc/nginx/nginx.conf
. - Thêm cấu hình sau để bảo vệ trang đăng nhập và bảng điều khiển của WordPress:
server {
listen 80;
server_name your_domain.com;
location /wp-login.php {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
include fastcgi_params;
fastcgi_pass unix:/var/run/php74-fpm.sock; # Hoặc đường dẫn đến PHP-FPM socket của bạn
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /wp-admin {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.php?$args;
}
# Các cấu hình khác cho trang của bạn...
}
File conf đầy đủ có thể tham khảo
server {
listen 80;
server_name domain.com www.domain.com;
access_log /var/log/nginx/domain.com-access.log main;
error_log /var/log/nginx/domain.com-error.log info;
root /data/vhosts/domain.com;
index index.php index.html index.htm;
client_max_body_size 100M;
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
try_files $uri $uri/ /index.php?$args;
}
location ~* /wp-content/uploads/.*\.php$ {
deny all;
}
location /wp-login.php {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
include fastcgi_params;
fastcgi_pass unix:/var/run/php74-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /wp-admin {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.php?$args;
}
location /_mydb {
alias /usr/share/nginx/html/_myadmin/;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php74-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
# execute all .php files via php-fpm
location ~ .php$ {
# connect to a unix domain-socket:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
# This file is present on Debian systems..
include fastcgi_params;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
Nếu cần đổi pass của htpasswd dùng lệnh sau:
sudo htpasswd /etc/nginx/.htpasswd tên_người_dùng
Sau khi hoàn tất mọi thứ hãy restart lại nginx bằng lệnh
sudo systemctl restart nginx