Hướng dẫn cấu hình nginx với SSL làm reverse proxy cho wordpress

30/12/2020

Theo mặc định, wordpress sẽ đi kèm với máy chủ web tích hợp của riêng nó. Điều này thuận tiện nếu ta chạy wordpress riêng tư hoặc sử dụng chỉ hướng đến sự nhanh chóng đạt được việc gì đó mà không quan tâm đến bảo mật. Tuy nhiên, khi ta có dữ liệu cần được bảo mật và muốn tăng hiệu suất web ta nên sử dụng một máy chủ web an toàn hơn như nginx.

Mô hình cài đặt :

Mô hình Ip Planning:

Bước 1: Định cấu hình Nginx

Thao tác thực hiện trên nginx server và các thao tác thực hiện với quyền root hoặc quyền sudo.

Cài đặt nginx :

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum -y install nginx

Backup file cấu hình :

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bk

Khởi chạy dịch vụ nginx

systemctl restart nginx systemctl enable nginx

Bước 2: Tạo file config của địa chỉ truy cập

Trước khi tạo file config cho địa chỉ truy cập, ta cần kiểm tra bản ghi dns đối với địa chỉ sẽ sử dụng :

nslookup [bản ghi tên miền]

Bản ghi sẽ trả về như sau:

Nếu chưa tạo 1 bản ghi tên miền, hãy truy cập zonedns để tạo 1 bản ghi.

Sau khi kiểm tra bản ghi đã tồn tại, ta sẽ tạo file config của tên miền, mỗi site sẽ được khai báo tương ứng với 1 file nằm trong thư mục /etc/nginx/conf.d .

Tạo file config site :

Tạo file có tên là tên miền của bạn với phần mở rộng là .conf và thêm vào file với nội dung như sau:

vi /etc/nginx/conf.d/wordpress.hungnv99.com.conf
server {     server_name wordpress.hungnv99.com;          location / {             proxy_set_header   X-Real-IP             $remote_addr;             proxy_set_header   X-Forwarded-For       $proxy_add_x_forwarded_for;             proxy_set_header X-Forwarded-Proto https;             proxy_pass http://10.10.34.162;         } }

Kiểm tra file cấu hình và khởi động lại nginx:

[root@nginx-lab ~]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl restart nginx

Kiểm tra cài đặt

Vào trình duyệt web và truy cập bằng tên miền để kiểm tra. Ở đây mình sẽ truy cập bằng địa chỉ wordpress.hungnv99.com

Khi truy cập được vào wordpress bằng tiên miền là đã thành công.

Tiếp theo, để địa chỉ wordpress hiển thị địa chỉ hoàn toàn bằng tên miền, ta cần sửa lại địa chỉ trong Side Admin

Đặt tên miền cho wordpress:

Truy cập và đăng nhập vào Side Admin, vào tab Settings và chọn General .

Sau đó sửa địa chỉ ip mặc định thành tên miền tại WordPress AddressSite Address rồi chọn lưu lại.

Sau khi đã lưu, ta trở lại Nginx server để tiếp tục cấu hình ssl cho site.

Bước 3: Thiết lập chứng chỉ Let’s Encrypt

Cài đặt Certbot

yum install epel-release -y yum install certbot-nginx -y

Sinh SSL bằng let’s Encrypt cho site wordpress.hungnv99.com

certbot --nginx -d wordpress.hungnv99.com

Sau đó điền các thông số như sau:

Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): hungvietnguyen6241@gmail.com Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Starting new HTTPS connection (1): supporters.eff.org Obtaining a new certificate Performing the following challenges: http-01 challenge for wordpress.hungnv99.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/wordpress.hungnv99.com.conf  Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/web1.hungnv99.xyz.conf  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://wordpress.hungnv99.com  You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=wordpress.hungnv99.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  IMPORTANT NOTES:  - Congratulations! Your certificate and chain have been saved at:    /etc/letsencrypt/live/wordpress.hungnv99.com/fullchain.pem    Your key file has been saved at:    /etc/letsencrypt/live/wordpress.hungnv99.com/privkey.pem    Your cert will expire on 2020-06-25. To obtain a new or tweaked    version of this certificate in the future, simply run certbot again    with the "certonly" option. To non-interactively renew *all* of    your certificates, run "certbot renew"  - Your account credentials have been saved in your Certbot    configuration directory at /etc/letsencrypt. You should make a    secure backup of this folder now. This configuration directory will    also contain certificates and private keys obtained by Certbot so    making regular backups of this folder is ideal.  - If you like Certbot, please consider supporting our work by:     Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate    Donating to EFF:                    https://eff.org/donate-le

Kiểm tra lại kết quả trong file config site

Sau khi sinh ssl cho site, ta kiểm tra lại file config để thấy sự thay đổi.

cat /etc/nginx/conf.d/wordpress.hungnv99.com.conf
server {     server_name wordpress.hungnv99.com;          location / {             proxy_set_header   X-Real-IP             $remote_addr;             proxy_set_header   X-Forwarded-For       $proxy_add_x_forwarded_for;             proxy_set_header X-Forwarded-Proto https;             proxy_pass http://10.10.34.162;         }       listen 443 ssl; # managed by Certbot     ssl_certificate /etc/letsencrypt/live/wordpress.hungnv99.com/fullchain.pem; # managed by Certbot     ssl_certificate_key /etc/letsencrypt/live/wordpress.hungnv99.com/privkey.pem; # managed by Certbot     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot  } server {     if ($host = wordpress.hungnv99.com) {         return 301 https://$host$request_uri;     } # managed by Certbot       server_name wordpress.hungnv99.com;     listen 80;     return 404; # managed by Certbot   }

Khởi động lại Nginx

systemctl restart nginx

Thao tác trên web server chạy wordpress

Bước 4: Sửa file wordpress

Sửa file wp-config.php

Tiến hành vào file wp-config.php tại /var/www/html/wp-config.php và thêm vào những dòng sau:

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'){ $_SERVER['HTTPS']='on'; } if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST']; }

Thông tin được thêm vào file như sau:

Khởi động lại dịch vụ http

systemctl restart httpd

Sau khi khởi động, vào lại trang web bằng địa chỉ https://wordpress.hungnv99.com để kiểm tra kết quả với ssl.

Phần kết luận

Sử dụng Nginx làm Reverse Proxy cho wordpress để có thể bảo mật và ẩn danh trang web. Ngoài ra nginx làm reverse proxy cũng có khả năng cân bằng tải và tăng tốc độ web, nó cực kỳ cần thiết cho 1 web server.

Như vậy, mình đã hướng dẫn các bạn cơ bản về cách cấu hình nginx làm reverse proxy cho wordpress. Chúc các bạn thành công !

ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Linux File System Hierarchy

The present Filesystem Hierarchy Standard (FHS) in use today is version 2.3 which was unveiled in January of 2004.  As...
28/12/2020

Hướng dẫn tạo email ảo miễn phí

Mail ảo hay còn được biết đến dạng email 10 phút, email dùng 1 lần, email ảo, email 10p … Mail 10...
28/12/2020

50 Best Games for Linux

As a hard core gamer, I had some reservations for installing and using Linux when I was first introduced to it way back...
28/12/2020