Cách tạo mật khẩu 2 lớp htpasswd cho wordpress dùng centos nginx

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.

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