Cấu hình virtual host apache2

Note lại cấu hình virtual host cho khỏi quên :D!

Tạo file cấu hình

1
2
cd /etc/apache2/sites-available
touch blog.local.conf

Nội dung file blog.local.conf sẽ như sau:

blog.local.confblog.local.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
<VirtualHost *:80>
ServerAdmin admin@blog.local
DocumentRoot /var/www/html/blog/public
ServerName blog.local
ServerAlias www.blog.local
<Directory /var/www/html/blog/public>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/blog_error.log
CustomLog ${APACHE_LOG_DIR}/blog_access.log combined
</VirtualHost>

Enable cấu hình này

1
sudo a2ensite blog.local.conf

Đăng kí nó vào DNS trên máy local

1
sudo vi /etc/hosts

Thêm dòng này vào nhé

1
127.0.0.1 blog.local

Sau đó restart lại apache
1
sudo service apache2 restart

Thế là xong rồi đó, bật trình duyệt và vào http://blog.local để kiểm tra thôi :D

Cấu hình ssl

Để cấu hình ssl và proxy hoạt động, bạn cần enable một số module không được enable mặc định trong Apache

Với ssl là module ssl

1
sudo a2enmod ssl

Và với proxy là các module proxy
1
2
3
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_connect

Đôi khi là cả module headers nếu báo lỗi param RequestHeader
1
sudo a2enmod headers

Sinh chứng thư số

Để cấu hình ssl, trang web sử dụng phương thức https, bạn cần đăng kí thêm chứng thư số cho trang web.

Cách 1: Sử dụng lệnh openssl

Generate Certhttps://www.digitalocean.com
1
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Định dạng keycrt có thể dạng .pem

Cách này tạo chứng thư số nhanh chóng, do openssl đã hỗ trợ sẵn trên các hệ điều hành Linux. Tuy nhiên với cách này, chứng thư số sẽ không đáng tin cậy trên trình duyệt do đó bạn load trang web https có thể cảnh báo.

Cách 2: sử dụng mkcert

Để chứng chỉ đáng tin cậy, bạn có thể sử dụng mkcert, bạn phải cài thêm nó:

Generate Certmkcert
1
2
3
4
5
6
$ mkcert -install
Created a new local CA at "/Users/filippo/Library/Application Support/mkcert" 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)!

$ mkcert blog.local

Cấu hình https

Normal configuration

Về cơ bản https bạn chỉ cần mở thêm 1 cổng 443 kèm theo đường dẫn chứng thư số:

blog.local.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<VirtualHost *:443>
ServerAdmin admin@blog.local
DocumentRoot /var/www/html/blog/public
ServerName blog.local
ServerAlias www.blog.local
<Directory /var/www/html/blog/public>
AllowOverride All
Order allow,deny
Allow from all
</Directory>

# SSL config
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/blog/blog.local.pem
SSLCertificateKeyFile /etc/apache2/ssl/blog/blog.local-key.pem

ErrorLog ${APACHE_LOG_DIR}/blog_error.log
CustomLog ${APACHE_LOG_DIR}/blog_access.log combined
</VirtualHost>

Khởi động lại apache2
1
sudo service apache2 restart

Bạn có thể test ứng dụng tại: https://blog.local

Proxy configuration

blog.local.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:443>
ProxyPreserveHost On
ProxyRequests Off
ServerName blog.local

# SSL config
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/blog/blog.local.pem
SSLCertificateKeyFile /etc/apache2/ssl/blog/blog.local-key.pem

ProxyPass / http://127.0.0.1:8000/
ProxyPassReverse / http://127.0.0.1:8000/
RequestHeader set X-Forwarded-Proto "https"
</VirtualHost>

_N.V.M_

Author

Ming

Posted on

2020-05-29

Updated on

2021-08-20

Licensed under

Comments