Hướng Dẫn Nginx #1: Các Khái Niệm Cơ Bản
Last updated
Last updated
Posted by truongluu Tháng Mười Một 21, 2018 in Máy chủ
Bài hướng dẫn này gồm có 3 phần:
Các khái niệm cơ bản: Tìm hiểu sự khác nhau của directive và context, mô hình kế thừa và cách mà nginx chọn các khối và vị trí máy chủ.
Hiệu suất: mẹo và thủ thuật về cải thiện tốc độ. Thảo luận về gzip, bộ nhớ đệm, bộ đệm và thời gian chờ.
Cài đặt SSL: Thiết lập cấu hình để phân phối nội dung qua HTTPS.
Để start nginx, dùng lệnh:
1
/etc/init.d/nginx start
Xem trạng thái của nginx:
1
/etc/init.d/nginx status
Tải lại file cấu hình:
1
/etc/init.d/nginx reload
Kiểm tra cấu trúc file cấu hình nginx:
1
nginx -t
Kết quả kiểm tra file cấu hình nginx:
12
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
Mặc định file cấu hình nginx được tìm thấy trong:
/etc/nginx/nginx.conf
/etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/*.conf
Tệp này bao gồm:
chỉ thị (directive): tuỳ chọn bao gồm tên và thông số, kết thúc bằng dấu “;”
1
gzip on;
bối cảnh (context): là phần chứa các chỉ thị
123456789
worker_processes 2; # chỉ thị trong bối cảnh toàn cục http { # bối cảnh http gzip on; # chỉ thị trong bối cảnh http server { # bối cảnh server listen 80; # chỉ thị trong bối cảnh server }}
Bạn phải chú ý khi sử dụng chỉ thị khác nhau trong nhiều bối cảnh, vì mô hình kế thừa khác với các chỉ thị khác nhau. Có 3 loại chỉ thị, mổi loại có một mô hình kế thừa của nó.
có một giá trị cho mổi bối cảnh. Ngoài ra, nó có thể chỉ được định nghĩa 1 lần trong bối cảnh. Bối cảnh con có thể ghi đè chỉ thị cha, nhưng ghi đè này chỉ có ý nghĩa trong bối cảnh con cung cấp.
123456789101112
gzip on;gzip off; # không hợp lệ, có 2 chỉ thị bình thường trong cùng 1 bối cảnh server { location /downloads { gzip off; } location /assets { # gzip được bật ở đây }}
Việc thêm nhiều chỉ thị trong cùng 1 bối cảnh sẽ thêm vào các giá trị thay vì ghi đè chúng hoàn toàn. Việc định nghĩa 1 chỉ thị trong bối cảnh con sẽ ghi đè tất cả giá trị cha trong một bối cảnh con cung cấp.
12345678910
error_log /var/log/nginx/error.log;error_log /var/log/nginx/error_notive.log notice;error_log /var/log/nginx/error_debug.log debug; server { location /downloads { # điều này sẽ ghi đè tất cả giá trị chỉ thị error_log ở bối cảnh cha error_log /var/log/nginx/error_downloads.log; }}
Hành động là chỉ thị thay đổi mọi thứ. Hành vi thừa kế sẽ phụ thuộc vào module.
Ví dụ, trong trường hợp của rewrite chỉ thị, mọi chỉ thị phù hợp sẽ được thực hiện:
12345678
server { rewrite ^ /foobar; location /foobar { rewrite ^ /foo; rewrite ^ /bar; }}
Nếu người dùng cố gắng fetch /sample:
Một máy chủ rewrite được thực hiện, viết lại /sample thành /foobar
Vị trí /foobar được khớp
Vị trí rewrite đầu tiên được thực hiện, viết lại /foobar thành /foo
Vị trí rewrite thứ 2 được thực hiện, viết lại /foo thành /bar
Đây là một hành vi khác mà chỉ thị return được cung cấp:
123456
server { location / { return 200; return 404; }}
Trong trường hợp trên, status 200 được trả về ngay lập tức.
Trong nginx, bạn có thể chỉ định nhiều máy chủ ảo, mổi máy chủ ảo được mô trả bới một bối cảnh server {}
1234567891011121314151617181920
server { listen *:80 default_server; server_name netguru.co; return 200 "Hello from netguru.co";} server { listen *:80; server_name foo.co; return 200 "Hello from foo.co";} server { listen *:81; server_name bar.co; return 200 "Hello from bar.co";}
còn tiếp…